Utilisez \n
comme vous utilisez dans votre chaîne.
Définissez numberOfLines sur 0 pour autoriser un nombre illimité de lignes.
label.numberOfLines = 0;
Mettez à jour le cadre d'étiquette pour qu'il corresponde à la taille du texte à l'aide de sizeWithFont:
. Si vous ne le faites pas, votre texte sera centré verticalement ou coupé.
UILabel *label; // set frame to largest size you want
...
CGSize labelSize = [label.text sizeWithFont:label.font
constrainedToSize:label.frame.size
lineBreakMode:label.lineBreakMode];
label.frame = CGRectMake(
label.frame.origin.x, label.frame.origin.y,
label.frame.size.width, labelSize.height);
Mise à jour: remplacement pour obsolète
sizeWithFont:constrainedToSize:lineBreakMode:
Référence, remplacement pour la taille obsolèteWithFont: dans iOS 7?
CGSize labelSize = [label.text sizeWithAttributes:@{NSFontAttributeName:label.font}];
label.frame = CGRectMake(
label.frame.origin.x, label.frame.origin.y,
label.frame.size.width, labelSize.height);
UILabel
n'a pas de propriétéorigin
nisize
sur iOS? Cela devrait probablement êtrelabel.frame.origin.x
etc.Utilisez l'option-return lors de la saisie dans la petite case d'Interface Builder pour insérer un saut de ligne (\ n). Dans les attributs d'étiquette d'Interface Builder, définissez # Lines = 0.
Sélectionnez l'étiquette, puis changez la propriété Lines en 0 comme dans l'image ci-dessus, puis utilisez \ n dans votre chaîne pour le saut de ligne.
la source
Si vous lisez une chaîne à partir d'un fichier XML, le saut de ligne
\n
dans cette chaîne ne fonctionnera pas dans leUILabel
texte. Le\n
n'est pas analysé pour un saut de ligne.Voici une petite astuce pour résoudre ce problème:
Vous devez donc remplacer la
\n
partie non analysée de votre chaîne par une partie analysée\n
dans un code durNSString
.Voici mes autres paramètres d'étiquette:
Le plus important est de définir
numberOfLines
sur0
(= nombre illimité de lignes dans l'étiquette).Vous ne savez pas pourquoi Apple a choisi de ne pas analyser les
\n
chaînes lues à partir de XML?J'espère que cela t'aides.
la source
\n
n'analyse pas lors de l'obtention de chaînes de Parse.com (je suppose que cela se produira également lors de l'obtention de chaînes à partir d'autres API)Dans le générateur d'interface, vous pouvez utiliser Ctrl+ Enterpour insérer
/n
à la position souhaitée. Cette façon pourrait implémenter la situation suivanteaaa
aaaaaaa
la source
Vous devez définir la
numberOfLines
propriété sur leUILabel
. La valeur par défaut est 1 , si vous la définissez sur 0, elle supprimera toutes les limites.la source
Il est important de noter que c'est
\n
(barre oblique inverse) plutôt que/n
.la source
Dans Swift 2.2,> iOS 8
J'ai défini Lines = 0 sur Storyboard, sous Inspector Inspector et lié une sortie de référence à l'étiquette. Ensuite, utilisez dans le contrôleur comme ceci:
la source
Faites comme ça
la source
// N'oubliez pas de mettre numberOfLines à zéro
la source
Sur Xcode 6, vous pouvez simplement utiliser \ n même à l'intérieur d'une chaîne lors de l'utilisation de l'habillage de mots. Ça va marcher. Ainsi, par exemple:
la source
Si vous utilisez un,
UILabel
vous devez vous rappeler que le paramètre par défaut est 1 ligne, donc peu importe le nombre de sauts que vous ajoutez (\n
ou\r
), vous devez vous assurer qu'il est défini sur plusieurs lignes afin qu'il puisse être ajouté. plus de lignes.Une alternative est d'utiliser
UITextView
ce qui est vraiment destiné aux multilignes.Vous pouvez facilement y parvenir dans la section d'attributs XCode de l'UILabel, voir capture d'écran:
la source
Pour ceux d'entre vous qui souhaitent une solution simple, procédez comme suit dans la zone de saisie Étiquette de texte:
Assurez-vous que vos lignes numériques sont définies sur 0.
Alt + Entrée
(Alt est votre clé d'option)
À votre santé!
la source
Juste en utilisant
label.numberOfLines = 0;
la source
Dans mon cas également \ n ne fonctionnait pas, j'ai résolu le problème en gardant le nombre de lignes à 0 et copié et collé le texte avec la nouvelle ligne elle-même par exemple au lieu de Hello \ n World i collé
dans le générateur d'interface.
la source
Dans xCode 11, Swift 5
\n
fonctionne bien, essayez le code ci-dessous:la source
la source
Pour toute autre personne qui pourrait avoir des problèmes
sizeWithFont:constrainedToSize:lineBreakMode:
ou passer à ios8 (la méthode est obsolète à partir d'ios7), j'ai ajusté ma taille en utilisant à lasizeToFit
place.la source
la source
Il me semble erroné de modifier les tailles de cadre d'étiquette, en particulier lors de l'utilisation de la mise en page automatique. L'utilisation de la méthode appendFormat semble plus appropriée. Voici mon exemple:
la source
Si vous définissez vos propriétés UILable de Plain à Attributed ... l'UILabel contiendra du texte multiligne quel que soit le nombre de paragraphes ainsi que la hauteur et la largeur de votre UILabel sont définies pour s'adapter à la zone d'écran dans laquelle vous souhaitez afficher le texte.
la source
J'ai rencontré le même problème, et voici comment j'ai résolu le problème. J'espère que cela sera utile pour quelqu'un.
// Swift 2
// Objectif c
// C # (Xamarin.iOS)
la source