iOS: UILabel dynamique de la hauteur à l'aide de sizeWithFont:constrainedToSize:lineBreakMode: pas de travail
J'essaie de donner mon UILabel
dynamique de hauteur, alors que ma mise en page des étiquettes d'autres semble correct à la fois paysage et portrait.
En mode portrait, mon texte est renvoyé à la deuxième ligne, dans le paysage, il ne le fait pas. Ainsi, lors de l'utilisation de sizeWithFont:constrainedToSize:lineBreakMode:
- je obtenir la même hauteur lors de la rotation dans les deux sens, quand j'avais supposé qu'il serait d'un plus grand nombre lorsque le texte était de 2 lignes.
Comment puis-je obtenir la hauteur de mes UILabel
quand il dispose de deux lignes de texte ou plus (portrait) et obtenir la nouvelle hauteur, qui est une ligne, en mode paysage?
Je suppose que je ne suis pas la compréhension de la façon d'obtenir la dynamique de la hauteur de travail...
UILabel *itemTitle = [[UILabel alloc] initWithFrame:CGRectMake(10.0f, top, screen.size.width - 20, 200.0f)];
itemTitle.text = self.newsAsset.title;
itemTitle.adjustsFontSizeToFitWidth = NO;
itemTitle.autoresizingMask = UIViewAutoresizingFlexibleWidth;
itemTitle.font = [UIFont boldSystemFontOfSize:18.0];
itemTitle.textColor = [UIColor blackColor];
itemTitle.shadowColor = [UIColor whiteColor];
itemTitle.shadowOffset = CGSizeMake(0, 1);
itemTitle.backgroundColor = [UIColor blueColor];
itemTitle.lineBreakMode = UILineBreakModeWordWrap;
itemTitle.numberOfLines = 0;
[itemTitle sizeToFit];
//Set the height
CGSize maximumLabelSize = CGSizeMake(300,9999);
CGSize titleSize = [itemTitle.text sizeWithFont:itemTitle.font constrainedToSize:maximumLabelSize lineBreakMode:itemTitle.lineBreakMode];
NSLog(@"Height: %.f Width: %.f", titleSize.height, titleSize.width);
//Adjust the label the the new height
CGRect newFrame = itemTitle.frame;
newFrame.size.height = titleSize.height;
itemTitle.frame = newFrame;
//Add them!
[headerView addSubview:itemTitle];
[itemTitle release];
top += titleSize.height;
constrainedToSize:
argument? pouvons-nous voir un peu de code?Mise à jour avec le code.
OriginalL'auteur Nic Hubbard | 2011-04-04
Vous devez vous connecter pour publier un commentaire.
de changer la ligne où vous définissez
maximumLabelSize
àCGSize maximumLabelSize = CGSizeMake(headerView.frame.size.width, CGFLOAT_MAX);
Ou quel que soit le nombre que vous voulez comme une hauteur maximale.OriginalL'auteur Jochen
Dans votre code comme il est maintenant, dans l'un des sens, vous obtiendrez la même largeur et la hauteur, puisque vous passez toujours une largeur de 300 à la
sizeWithFont
méthode. Si vous la rendre dynamique, peut-être le résultat de lasizeWithFont
va aussi changer dynamiquement.peut-être que l'utilisation
screen.size.width - 20
au lieu de 300, comme vous le faites dans les alloc/init ligne? Et je voudrais aussi NSLog() tout ce qui peut être d'intérêt, par exempleNSLog(@"screen size: %@",NSStringFromCGSize(screen.size));
(juste pour s'assurer que l'orientation de l'écran changement fait suite à l'renversé la taille de l'écran à ce point).
OriginalL'auteur mvds