Étiquette multiligne iOS dans le générateur d'interface


131

Comment puis-je créer une multiligne UILabeldans le générateur d'interface pour iOS? J'ai essayé UITextViewmais cela ne répondait pas tout à fait à mes besoins.

Comment puis-je ajouter une multiligne (texte) dans l'étiquette?


Pouvez-vous expliquer pourquoi id ne répondait pas à vos besoins? TextView en lecture seule est identique à une étiquette multiligne.
Shreesh le

Il ne semble pas y avoir de propriété de couleur du texte en surbrillance.
Samuli Lehtonen

7
Pour les autres visiteurs de cette question, ne suivez pas la réponse acceptée de définir les lignes à 5 ou n. Réglez-le plutôt sur 0 (sorte de l'infini). Vérifiez la réponse de vijay ci-dessous.
GoodSp33d

Réponses:


178

Vous pouvez utiliser une numberOfLinespropriété qui définit le nombre maximum de lignes qu'une étiquette peut avoir. Par défaut, c'est 1. Le définir sur 0signifie que l'étiquette aura un nombre illimité de lignes .

Vous pouvez le faire en code:

textLabel.numberOfLines = 5 // for example

Ou dans Interface Builder:


J'ai essayé, cela fonctionne lorsque j'écris l'étiquette, mais lorsque j'appuie sur Entrée pour l'accepter, tout se passe sur une seule ligne.
Samuli Lehtonen le

3
Et quel est widthton label?
akashivskyy

8
Ok, je l'ai maintenant, j'ai augmenté la hauteur, ça l'a fait. Merci!
Samuli Lehtonen

Vous pouvez définir Lignes sur 0 pour un nombre illimité de lignes.
paulmelnikow

2
Voir aussi cette réponse qui explique comment taper une étiquette multiligne dans IB: stackoverflow.com/a/992511/893113
paulmelnikow

117

Appuyez sur Control+ Enterpour ajouter une ligne dans UILabel dans Interface Builder / Storyboard.


2
Merci, c'est ce que j'essayais de faire :)
mcont

Cela devrait être la solution!
SunnySonic

14
Joli. Mais "Q" n'est pas nécessaire je suppose
Rendel

1
@Oliver Logic il ne quitte pas Xcode ... Vous n'avez pas lu correctement. Il a dit CONTROL + Q + ENTER (et non CMD + Q) .. Mais Rendel a raison, seul CONTROL + ENTER suffit ici.
gaskbr

1
@Logic il ne quitte pas Xcode ... Vous n'avez pas lu correctement. Il a dit CONTROL + Q + ENTER (et non CMD + Q) .. Mais Rendel a raison, seul CONTROL + ENTER suffit ici.
gaskbr

47

Merci AppleVijay!

Aussi pour appeler sizeToFit, comme ceci:

label.lineBreakMode = UILineBreakModeWordWrap;
label.numberOfLines = 0;
[label sizeToFit];

La hauteur sera automatiquement calculée.


11
Remarque: UILineBreakModeWordWrap est obsolète à partir d'iOS6. Utilisez [label setLineBreakMode: NSLineBreakWordWrapping]; au lieu.
John Feagans

5
"By" manquant. label.lineBreakMode = NSLineBreakByWordWrapping
user1872384

1
utilisez NSLineBreakMode.ByWordWrapping au lieu de UILineBreakModeWordWrap pour swift
Deb

12

définissez la largeur de l'étiquette selon vos besoins, puis utilisez IB pour définir les sauts de ligne en retour à la ligne

ou utiliser avec un code comme celui-ci

J'ai trouvé une solution.

Il suffit d'ajouter le code suivant:

textLabel.lineBreakMode = NSLineBreakByWordWrapping;
textLabel.numberOfLines = 0;

5

Définissez le nombre de lignes à zéro pour les informations de texte dynamique, cela sera utile lorsque votre texte varie.

Programmation (Swift 3)

var label = UILabel()
let stringValue = "iOS\nmultiline\nlabel\nin\nInterface\nbuilder"
label.text = stringValue
label.numberOfLines = 0 // Set 0, if number of lines not specified.
label.lineBreakMode = .byTruncatingTail // or .byWrappingWord
label.minimumScaleFactor = 0.8 . // It is not required but nice to have a minimum scale factor to fit text into label frame

Utilisation d'Inetrface Builder

entrez la description de l'image ici

Remarque: Il n'est pas nécessaire de définir Minimum Font Scale, mais il est agréable d'avoir un facteur d'échelle minimum pour insérer le texte dans le cadre de l'étiquette.


2

Le nombre de lignes est visible dans IB avec le champ de lignes Plain UILabels défini sur 0. Il créera plusieurs lignes selon l'espace fourni à l'étiquette.


1

Dans iOS7 (Xcode5), vous devez définir les lignes d'UILabel sur 0pour une entrée multiple illimitée dans le storyboard.
Le plus important est de définir le height of the UILabelpeut contenir les lignes d'entrée que vous allez définir.


0
textLabel.lineBreakMode = UILineBreakModeWordWrap;

textLabel.numberOfLines = 0;

CGSize size =  [[[arrNewsFeed objectAtIndex:row] objectForKey:@"c"]  sizeWithFont:[UIFont systemFontOfSize:14.0]  constrainedToSize:CGSizeMake(188, CGFLOAT_MAX)
                                                                     lineBreakMode:NSLineBreakByTruncatingTail];

textLabel.frame = (CGRect){.origin = cell.lblNewsDescription.frame.origin, .size = size};

0

Si vous définissez la propriété numberOfLines égale à 0, l'étiquette s'ajustera automatiquement au nombre requis de lignes du texte donné.


0

J'avais du mal avec ça depuis longtemps. Je voulais juste que le texte de mon étiquette apparaisse sur la deuxième ligne. Mais quoi que je fasse, cela ne ferait que déborder de la boîte UILabel. Pour moi, changer l'inspecteur de redimensionnement automatique a fonctionné. Solution simple.

Peut-être que quelqu'un pourrait trouver utile qui cherche quelque chose de similaire.


-2

Pour X-Code 7.2

  1. - Sélectionnez UILabel

  2. - Inspecteur d'attributs

  3. - Texte - Sélectionnez Attribué

Après cela, vous pouvez voir un autre attribut que vous pouvez ajouter à votre étiquette, dans lequel vous pouvez également trouver le nombre de lignes . Ce qui rend votre étiquette multiligne .

Image X-Code pour un UILabel multiligne


Le nombre de lignes est visible dans IB avec les étiquettes UIL simples.
Graham Lea
En utilisant notre site, vous reconnaissez avoir lu et compris notre politique liée aux cookies et notre politique de confidentialité.
Licensed under cc by-sa 3.0 with attribution required.