Existe-t-il un moyen d'avoir plusieurs lignes de texte dans un fichier UILabel
comme dans le UITextView
ou dois-je utiliser le second à la place ?
Merci.
Existe-t-il un moyen d'avoir plusieurs lignes de texte dans un fichier UILabel
comme dans le UITextView
ou dois-je utiliser le second à la place ?
Merci.
J'ai trouvé une solution.
Il suffit d'ajouter le code suivant :
textLabel.lineBreakMode = NSLineBreakByWordWrapping;
textLabel.numberOfLines = 0;
Restauration de l'ancienne réponse (pour référence et pour les développeurs désireux de prendre en charge les iOS inférieurs à 6.0) :
textLabel.lineBreakMode = UILineBreakModeWordWrap;
textLabel.numberOfLines = 0;
A côté de cela, les deux valeurs de l'énumération donnent lieu à 0
de toute façon.
UILineBreakModeWordWrap est en fait la valeur par défaut, donc vous n'avez pas besoin de la première ligne.
Pour ceux qui utilisent Swift : cell.textLabel?.lineBreakMode = NSLineBreakMode.ByWordWrapping
et cell.textLabel?.numberOfLines = 0
Merci de fournir également Xamarin-Code. L'autocomplétion n'a pas fonctionné car ils ont choisi d'abréger cette propriété... +1
(Alors qu'il déterre sciemment un fil de discussion vieux de plus d'un an ) Il y a une chose que j'aimerais parfois pouvoir faire dans l'IB, c'est saisir du texte sans intégrer des sauts de ligne, définir UILineBreakModeWordWrap et numberOfLines = 0, puis faire en sorte que l'étiquette s'adapte automatiquement à la hauteur, tout en continuant à concevoir dans IB. Je pense au cas où la vue est redimensionnée en paysage, où les sauts de ligne dans l'étiquette pourraient être problématiques. Ou bien... Je pourrais être en train de mal utiliser IB ! Peut-être que le fait que les étiquettes s'ajustent automatiquement dans IB cause plus de problèmes qu'il n'en résout ? (De plus, vous ne pouvez pas invoquer sizeToFit à ce stade de toute façon).
Le "0" provient des documents relatifs à UILabel, le retour alt d'un ami qui utilise Interface Builder depuis de nombreuses années.
La meilleure solution que j'ai trouvée (à un problème autrement frustrant qui aurait dû être résolu dans le framework) est similaire à celle de vaychick.
Il suffit de fixer le nombre de lignes à 0 dans l'IB ou le code.
myLabel.numberOfLines = 0;
Cela affichera les lignes nécessaires mais repositionnera l'étiquette de manière à ce qu'elle soit centrée horizontalement (de sorte qu'une étiquette de 1 ligne et de 3 lignes soit alignée dans sa position horizontale). Pour corriger cela, ajoutez :
CGRect currentFrame = myLabel.frame;
CGSize max = CGSizeMake(myLabel.frame.size.width, 500);
CGSize expected = [myString sizeWithFont:myLabel.font constrainedToSize:max lineBreakMode:myLabel.lineBreakMode];
currentFrame.size.height = expected.height;
myLabel.frame = currentFrame;
Prograide est une communauté de développeurs qui cherche à élargir la connaissance de la programmation au-delà de l'anglais.
Pour cela nous avons les plus grands doutes résolus en français et vous pouvez aussi poser vos propres questions ou résoudre celles des autres.
5 votes
Notez que
UILineBreakModeWordWrap
a été déprécié dans iOS 6. Vous devez maintenant utiliserNSLineBreakByWordWrapping = 0
Voir la documentation ici0 votes
Vérifiez cette question stackoverflow.com/questions/2312899/