Quand j'ajoute une sous-vue à un UIView
, ou quand je le redimensionnement d'un existant sous-vue, je m'attends [view sizeToFit]
et [view sizeThatFits]
afin de refléter ce changement. Cependant, mon expérience est qu' sizeToFit
ne fait rien, et sizeThatFits
renvoie la même valeur avant et après le changement.
Mon projet de test a une vue unique qui contient un seul bouton. En cliquant sur le bouton ajoute un autre bouton de la vue, puis les appels sizeToFit
sur le contenant de vue. Les limites de la vue sont sous-évaluées à la console avant et après l'ajout de la sous-vue.
- (void) logSizes {
NSLog(@"theView.bounds: %@", NSStringFromCGRect(theView.bounds));
NSLog(@"theView.sizeThatFits: %@", NSStringFromCGSize([theView sizeThatFits:CGSizeZero]));
}
- (void) buttonTouched {
[self logSizes];
UIButton *btn = [UIButton buttonWithType:UIButtonTypeRoundedRect];
btn.frame = CGRectMake(10.0f, 100.0f, 400.0f, 600.0f);
[theView addSubview:btn];
[theView sizeToFit];
[self performSelector:@selector(logSizes) withObject:nil afterDelay:1.0];
}
Et la sortie est:
2010-10-15 15:40:42.359 SizeToFit[14953:207] theView.bounds: {{0, 0}, {322, 240}}
2010-10-15 15:40:42.387 SizeToFit[14953:207] theView.sizeThatFits: {322, 240}
2010-10-15 15:40:43.389 SizeToFit[14953:207] theView.bounds: {{0, 0}, {322, 240}}
2010-10-15 15:40:43.391 SizeToFit[14953:207] theView.sizeThatFits: {322, 240}
Quelque chose doit m'échapper d'ici.
Merci.