2015-11-08 1 views
0

J'ai une vue appelée profil qui prend (0,0,320,60) taille dans storyboard qui prend pleine largeur mais 60 hauteur, et j'essaie de placer une autre vue appelée classement à l'intérieur de celui-ci et quel que soit l'appareil est iPhone4s, 5s, 6s, 6 il devrait juste prendre mon avis et le mettre au centre.Vue du centre dans une autre vue

Voici ce que j'ai essayé:

ranking.frame = CGRectMake(0, 0, 120, 60); 
ranking.center = self.Profile.center; 

Le code actuel ne centrage mon point de vue sur tous les appareils. que puis-je faire pour le faire dynamiquement?

+1

utilisez les contraintes et la mise en page automatique, ne ** créez ** pas d'interface utilisateur via le code. Ce sera une douleur dans le *** le fait de travailler en premier lieu. Et ce sera encore plus de travail pour le maintenir. – luk2302

+1

@ luk2302: Quelle était cette ***;): D: P –

+0

vue de profil est une vue partagée qui est placé dans 10 contrôleurs, donc je ne veux pas le créer dans 10 storyboards. –

Répondre

2

Vous pouvez utiliser avec AutoLayout la méthode suivante:

+ (void)centerView:(UIView *)view inContainerView:(UIView *)containerView withSuperView:(UIView *)superView 
{ 
    [superView addConstraint:[NSLayoutConstraint constraintWithItem:view attribute:NSLayoutAttributeCenterY relatedBy:NSLayoutRelationEqual toItem:containerView attribute:NSLayoutAttributeCenterY multiplier:1.0 constant:0.0]]; 
    [superView addConstraint:[NSLayoutConstraint constraintWithItem:view attribute:NSLayoutAttributeCenterX relatedBy:NSLayoutRelationEqual toItem:containerView attribute:NSLayoutAttributeCenterX multiplier:1.0 constant:0.0]]; 
} 

Vous pouvez ajouter la méthode ci-dessus dans votre ViewController ou dans une classe d'aide. N'oubliez pas de définir la propriété translatesAutoresizingMaskIntoConstraints sur false avant d'utiliser la mise en forme automatique sur votre vue. Donc, si ranking est votre sous-vue et self.Profile est votre superView, vous pouvez faire ce qui suit.

UIView *ranking = [[UIView alloc] init]; 
ranking.translatesAutoresizingMaskIntoConstraints = false; 
[self.Profile addSubview:ranking]; 
[[self class] centerView:ranking inContainerView:self.Profile withSuperView:self.Profile]; 
[self.Profile addConstraint:[NSLayoutConstraint constraintWithItem:ranking attribute:NSLayoutAttributeWidth relatedBy:NSLayoutRelationEqual toItem:nil attribute:NSLayoutAttributeNotAnAttribute multiplier:1.0 constant:120]]; 
[self.Profile addConstraint:[NSLayoutConstraint constraintWithItem:ranking attribute:NSLayoutAttributeHeight relatedBy:NSLayoutRelationEqual toItem:nil attribute:NSLayoutAttributeNotAnAttribute multiplier:1.0 constant:60]];