Je travaille sur un projet Swift avec Storyboards dans lequel je veux que le texte soit intégré à une étiquette. Dans l'ancienne version d'Objective-C où je n'utilisais pas de Storyboard, j'utilisais les paramètres suivants et tout fonctionnait parfaitement.
Voici les paramètres pour Swift
Je lisais des informations sur les problèmes potentiels de mise en page automatique avec les paramètres de largeur préférés. Je les ai actuellement configurés pour la mise en page automatique et l'étiquette elle-même est définie sur une largeur de 560. J'ai ajouté une contrainte pour conserver l'étiquette à 20 pixels de la vue d'ensemble supérieure et bien que je pensais que cela fonctionnerait, je ne peux toujours pas obtenir le texte emballage. Les paramètres de dimension sont ci-dessous.
Quelqu'un peut-il expliquer comment faire en sorte que le texte soit bouclé?
Tout d'abord, la bonne nouvelle: vous avez défini le libellé sur 2 lignes et Word Wrap. Donc, il peut envelopper. Excellent.
Maintenant, vous devez vous assurer que l'étiquette est assez grande. Indiquez soit la contrainte no height, soit donnez-lui une contrainte de hauteur suffisante pour pouvoir accueillir deux lignes.
Enfin, vous devez limiter sa largeur . C'est ce qui fait que le texte se termine. Si vous ne limitez pas la largeur de l'étiquette, elle continuera de croître vers la droite, voire hors de l'écran. La limite de largeur de l'étiquette arrête cette croissance vers la droite et entraîne le texte en boucle (et l'étiquette grandit plutôt vers le bas).
Vous pouvez limiter la largeur de plusieurs manières. Vous pouvez avoir une contrainte de largeur réelle. Ou vous pouvez avoir une contrainte principale et une contrainte finale, quelque chose de relativement immobile, tel que le superview. Et il existe une troisième possibilité: sur l’inspecteur Taille (que vous indiquez également, en bas à droite de votre question), définissez la largeur préférée (elle est affichée en haut de l’inspecteur Taille): c’est la largeur à laquelle Toutes choses étant égales par ailleurs, l’étiquette cessera de se développer vers la droite et s’enveloppera et s’agrandira au lieu de cela.
Déclarez votre UILabel par programme et donnez
yourUILabel.contentMode = .scaleToFill
yourUILabel.numberOfLines = 0
yourUILabel.leadingMargin(pixel: 10)
yourUILabel.trailingMargin(pixel: 10)
Cela a fonctionné pour moi.
Votre texte sera renvoyé à la ligne si vous avez indiqué un nombre de lignes supérieur à 1. Toutefois, vous risquez de ne pas pouvoir le voir se dérouler si la hauteur de l'étiquette ne suffit pas pour afficher le contenu. Je vous suggère de supprimer la contrainte de hauteur ou d'augmenter sa valeur.
Au cas où cela aiderait quelqu'un: j’avais suivi le conseil donné ici de ne pas emballer l’étiquette sur deux lignes mais rien n’avait fonctionné. Ce qui a bien fonctionné pour moi, c’est que j’ai tout d’abord supprimé certaines des contraintes pertinentes du storyboard (j’utilise la mise en page automatique) et que l’étiquette était correctement emballée. J'ai lentement rajouté les contraintes dont j'avais besoin et tout semble encore fonctionner correctement. Donc, supprimer et refaire vos contraintes peut aider.
Ce problème a été résolu en remplaçant le type d'étiquette par "Placeholder" sous Intrinsic Size
dans IB. Quand j'ai changé cela, le texte a été emballé et les avertissements ont disparu.
Comme je vois ton constructeur d'interface. Il y a deux problèmes. Le premier est avec vos contraintes, et un autre est avec la propriété.