É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?

Samuli Lehtonen
la source
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:

akashivskyy
la source
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.

user1233894
la source
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.

Bogdan
la source
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;
Vijay-Apple-Dev.blogspot.com
la source
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.

Krunal
la source
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.

siddhant
la source
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.

Artisan
la source
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};
Tanvi Jain
la source
0

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

Pablo Marrufo
la source
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.

Harshal Karande
la source
-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

codeCraft
la source
Le nombre de lignes est visible dans IB avec les étiquettes UIL simples.
Graham Lea