UILabel sizeToFit méthode ne fonctionne pas correctement
J'essaie de montrer un long bloc de texte à l'intérieur d'un UILabel dans une ligne.
Le UILabel est une sous-vue de UIScrollView donc, je peux faire défiler et voir l'ensemble de la UILabel.
Mon problème est que le sizeToFit méthode que partiellement œuvres.
textLabel.attributedText = attributedString;
textLabel.numberOfLines = 1;
[textLabel sizeToFit];
textScrollView.contentSize = CGSizeMake(textLabel.frame.size.width, textLabel.frame.size.height);
La UIScrollView de la taille du contenu devient assez grand pour afficher l'intégralité de l'UILable, mais pour une ligne comme:
donc je vais essayer de partager quelques uns ici à chaque fois dans un tout."
La UILabel montre:
donc je vais essayer de partager som...
Ce que je fais mal?
- est "Lignes" de la propriété de UILabel est de 0 ?
- no - "textLabel.numberOfLines = 1;"
- Essayez de rendre 0.......
- Changé pour 0 - maintenant, il affiche le texte dans plus d'une ligne
- ur le problème est résolu ?
- Si vous lisez la première phrase de ma question vous pouvez le voir, j'ai écrit "j'essaie de montrer un long bloc de texte à l'intérieur d'un UILabel dans une ligne.". Donc, malheureusement - encore non résolu 🙂
- votre mise en page automatique est cochée?
- C'était le problème! Merci!
Vous devez vous connecter pour publier un commentaire.
S'avère que le code est très bien - mais le recours à la mise en page automatique a été activée.
Décoché - tout fonctionne tout simplement génial...
Si vous souhaitez obtenir ce avec mise en page automatique activé c'est simple. Juste assurez-vous d'ajouter
numberOfLines
adjustsFontSizeToFitWidth
- il va juste réduire la taille de la police si le texte ne serait pas à l'aise, ce qui peut ne pas être ce que vous voulez.Étonnamment, si vous n'avez pas mis une contrainte sur la largeur de l'étiquette, ce serait le travail:
J'ai appris cela par essai et erreur.
essayer
La raison la plus courante pour
sizeToFit
ne fonctionne pas correctement est laUILabel
ne pas avoir de contraintes de mise en page automatique, par exemple, si vous êtes implicitement en s'appuyant sur la position de la vue reste fixe par rapport à la partie supérieure gauche. L'ajout d'une contrainte à tous les (meilleures, centerY, n'importe quoi) permettra de le corriger, sans doute parce qu'il en résulteralayoutSubviews
d'être appelé à un certain point, comme il est suggéré dans Maxthon Chan réponse.Puisque vous avez limité votre Étiquette pour afficher une seule ligne de Texte et de tronquer le reste , c'est se comporter de la même
Espère que ça va vous aider à