UILabel centre de la vue
Comment se fait la UILabel
établies dans le présent code n'est pas dans le centre de la view
?
//create the view and make it gray
UIView *view = [[UIView alloc] init];
view.backgroundColor = [UIColor darkGrayColor];
//everything for label
UILabel *label = [[UILabel alloc] initWithFrame:CGRectMake(0,0,42,21)];
//set text of label
NSString *welcomeMessage = [@"Welcome, " stringByAppendingString:@"username"];
welcomeMessage = [welcomeMessage stringByAppendingString:@"!"];
label.text = welcomeMessage;
//set color
label.backgroundColor = [UIColor darkGrayColor];
label.textColor = [UIColor whiteColor];
//properties
label.textAlignment = NSTextAlignmentCenter;
[label sizeToFit];
//add the components to the view
[view addSubview: label];
label.center = view.center;
//show the view
self.view = view;
La ligne, label.center = view.center;
devrait déplacer la label
au centre de la view
. Mais au lieu de cela il se déplace à l'endroit où le centre de la label
est dans le coin gauche de la view
comme indiqué ci-dessous.
capture d'écran http://gyazo.com/2d1c064a671e32c7eb004647232fa430.png
Personne ne sait pourquoi?
Tout d'abord pourquoi vous ne
D'abord, parce que je suis bâtiment de vue au sein d'une application. Deuxièmement, Comment puis-je le faire. Et la troisième, j'utilise
Je suppose que ce code est dans
Oui et c'est pourquoi j'ai expliqué aussi à votre dernière question. Sans un cadre, d'un point de vue a CGRectZero image c'est à dire (0,0,0,0). Afin de toujours définir un cadre pour UIViews.
Un plaisir de vous aider 🙂
self.view=view
? Vous n'avez pas besoin d'un second votre view
ne dispose pas d'un cadre défini. Troisièmement, l'utilisation de l'étiquette.centre = auto.vue.centre de.D'abord, parce que je suis bâtiment de vue au sein d'une application. Deuxièmement, Comment puis-je le faire. Et la troisième, j'utilise
view.center
parce que je suis entrain de créer un nouveau point de vue. J'ai besoin de régler le point de vue de UIView *view
à l'aide de self.view= view
Je suppose que ce code est dans
-viewDidLoad
. Droit?Oui et c'est pourquoi j'ai expliqué aussi à votre dernière question. Sans un cadre, d'un point de vue a CGRectZero image c'est à dire (0,0,0,0). Afin de toujours définir un cadre pour UIViews.
Un plaisir de vous aider 🙂
OriginalL'auteur Dummy Code | 2013-06-05
Vous devez vous connecter pour publier un commentaire.
Vous devez init votre point de vue avec un cadre:
OriginalL'auteur Corey
Ceci est causé par votre
view
variable de ne pas avoir un cadre défini. Par défaut, il dispose d'un cadre défini à(0, 0, 0, 0)
, de sorte que son centre est(0, 0)
.C'est pourquoi, lorsque vous ne
label.center = view.center;
, vous définissez le centre de votre étiquette de(0 - label.width /2, 0 - label.height /2)
.(-80.5 -10.5; 161 21)
dans votre cas.Il n'est pas nécessaire pour un nouveau
UIView
si votreUIViewController
en avez déjà un, juste à travailler avecself.view
.Notez également que pour faire
label.center = self.view.center
ne fonctionnera pas correctement lors de la rotation en mode paysage.OriginalL'auteur Guillaume Algis
Votre code devrait fonctionner correctement si vous le mettez dans le viewDiLayoutSubviews au lieu de viewDidLoad
OriginalL'auteur hellosunschein