Cela fonctionne également très bien pour les chaînes multilignes.
Fondamentalement, c'est une fonction qui vous permet de voir la taille d'une chaîne lorsqu'elle est rendue avec un mode de police et de saut de ligne.
Je l'utilise dans quelques endroits de mon application quand j'ai un texte de longueur variable que je veux afficher dans une certaine zone.
Par défaut, un UILabel centre le texte verticalement. Pour que le texte soit aligné au mieux, vous devez redimensionner l'étiquette pour n'être que la hauteur requise par la chaîne qui s'y trouve.
J'utilise cette méthode pour cela.
Et exemple de la façon dont je l'utiliser pour le faire est la suivante:
//Calculate the expected size based on the font and linebreak mode of your label
CGSize maximumLabelSize = CGSizeMake(296,9999);
CGSize expectedLabelSize = [yourString sizeWithFont:yourLabel.font
constrainedToSize:maximumLabelSize
lineBreakMode:yourLabel.lineBreakMode];
//adjust the label the the new height.
CGRect newFrame = yourLabel.frame;
newFrame.size.height = expectedLabelSize.height;
yourLabel.frame = newFrame;
Vous indiquez la taille d'une zone que vous devez mettre le texte, et cette méthode vous indique la quantité d'espace il prendra (emballage au besoin). Aussi, si la chaîne dépasse les limites du rectangle que vous fournissez, vous pouvez dire et ensuite décider comment afficher le texte.
La référence à ce n'est pas réellement envelopper le texte est là parce que cette méthode ne fait réellement rien au texte. Il se contente de l'énoncer virtuellement et renvoie la taille d'une zone dont il aurait besoin pour l'exposer.
est la responsabilité de l'étiquette (ou du conteneur que vous utilisez pour le texte) pour effectuer l'emballage/quoi que ce soit d'autre qui doit être fait.
Espérons que ça aide.
chris.
newFrame.size.height = taille maximale d'étiquette .height; SB: newFrame.size.height = expectedLabelSize.height; – JoBu1324
fonctionne même lorsque vous dessinez dans un rect! – tipycalFlow