Comment mettre en haut à gauche de l'alignement pour UILabel pour application iOS?
J'ai ajouté une étiquette dans ma plume fichier, puis sa nécessaire d'avoir en haut à gauche alignement d'étiquette. Comme je suis de fournir des textes au moment de l'exécution si ce n'est pas sûr de combien de lignes y sont.
Donc, si le texte contient une seule ligne alors qu'il apparaît comme à la verticale-centre d'aligné. Que l'alignement n'est pas de correspondance avec mon respectifs lable en face d'elle.
Par exemple:
Qui est à la recherche impair 🙁
Est-il de toute façon où je peux mettre le texte de l'étiquette appropriée à en Haut à Gauche de l'alignement?
- double possible de aligner le texte Verticalement dans un UILabel
Vous devez vous connecter pour publier un commentaire.
Plutôt que de ré-expliquer, j'ai un lien vers ce lieu vaste & très bien notés question/réponse:
Aligner le texte verticalement vers le haut à l'intérieur d'un UILabel
La réponse courte est non, Apple n'a pas fait que cela est facile, mais il est possible en changeant la taille de l'image.
Il est assez facile à faire. Créer un
UILabel
sous-classe avec unverticalAlignment
propriété et remplacertextRectForBounds:limitedToNumberOfLines
pour retourner les bornes correctes pour un haut, au milieu ou en bas de l'alignement vertical. Voici le code:SOLabel.h
SOLabel.m
bounds.size.width
au lieu derect.size.width
danstextRectForBounds:limitedToNumberOfLines:
semble résoudre ce problème.J'ai trouvé une solution à l'aide de mise en forme automatique dans la table de montage séquentiel.
1) Ensemble de lignes à 0 et l'alignement du texte à Gauche.
2) Régler la hauteur de la contrainte.
3) La hauteur de la Contrainte doit être en Relation - inférieur ou Égal à
4)
J'ai obtenu le résultat comme suit :
viewWillLayoutSubviews
dans le contrôleur ou la cellule de fichier? Si le contrôleur, comment est-il accéder à la UILabel de la cellule?La SOLabel fonctionne pour moi.
Swift 1:
Swift 3:
Cette version a été mis à jour à partir de l'original pour permettre le soutien de RTL langues:
Dans votre code
Attention, si vous utilisez le tableau de cellules ou d'autres points de vue qui sont recyclés avec des données différentes, vous aurez besoin de stocker l'image d'origine quelque part et de le réinitialiser avant d'appeler sizeToFit.
J'ai trouvé une autre solution pour le même problème. J'ai utilisé
UITextView
au lieu deUILabel
et miseditable()
fonction defalse
.J'ai été aussi à avoir ce problème, mais ce que j'ai trouvé était de l'ordre dans lequel vous définissez la UILabel propriétés et méthodes de questions!
Si vous appelez
[label sizeToFit]
avantlabel.font = [UIFont fontWithName:@"Helvetica" size:14];
puis le texte ne correspond pas au top, mais si vous les échanger autour de il ne!J'ai aussi remarqué que le réglage d'abord le texte fait une différence trop.
Espère que cette aide.
Dans mon cas, c'était
bottom space
contrainte de problème. J'avais mis à= 16
.Quand je l'ai mis à
bottom to >= 16
, cette question a obtenu résolu.Aussi, si vous avez n'importe quelle hauteur de contrainte dans l'étiquette, alors vous avez besoin de l'enlever.
Voici mon étiquette de la contrainte de vue de la taille de l'inspecteur:
Que vous êtes à l'aide de l'interface builder, définir les contraintes de votre étiquette (assurez-vous de régler la hauteur et la largeur ainsi). Puis, dans la Taille de l'Inspecteur, le contrôle de la hauteur de l'étiquette. Là, vous aurez envie de lire >= au lieu de =. Ensuite, dans la mise en œuvre de cette vue contrôleur, définissez le nombre de lignes à 0 (peut aussi être fait au bureau de l'IB) et placer l'étiquette [label sizeToFit]; et que votre texte gains en longueur, l'étiquette de grandir en hauteur et de garder votre texte dans le coin supérieur gauche.
Solution avec SoLabel fonctionne , Merci.
Soufflet, j'ai ajouté monotouch version:
Le plus simple et le plus simple est d'intégrer l'Étiquette dans Empilervoir et réglage Empilervoir de l'Axe Horizontal, l'Alignement vers le Haut dans l'Attribut de l'Inspecteur du Storyboard comme montré ici.
Si ce que vous avez besoin est de texte non modifiable que par défaut commence à le coin supérieur gauche, vous pouvez simplement utiliser un Affichage de Texte au lieu d'une étiquette, puis de définir son état de non-modifiable, comme ceci:
Plus facile que de jouer avec les étiquettes...
Cheers!
De construction sur le dessus de totiG est génial réponse, j'ai créé une IBDesignable classe qui le rend très facile à personnaliser un UILabel de l'alignement vertical à droite de la table de montage séquentiel. Assurez-vous que vous définissez votre UILabel de la classe de 'VerticalAlignLabel" de la table de montage séquentiel de l'identité de l'inspecteur. Si l'alignement vertical ne prend pas effet, aller à l'Éditeur->Actualiser Tous les points de Vue qui devrait faire l'affaire.
Comment il fonctionne:
Une fois que vous définissez votre UILabel classe correctement, le storyboard doit vous montrer un champ de saisie qui prend un entier (alignement de code).
Mise à jour: j'ai ajouté le support pour l'centrée sur les étiquettes ~Sev
Entrez 0 pour l'Alignement en Haut
Entrez 1 pour le centre de l'Alignement
Entrez 2 pour le Fond d'Alignement
HTML:
vous pouvez aussi changer votre UILabel à UITextView, car ils se sont contentés de faire la même chose à l'exception de l'avantage de UITextView est que le texte est automatiquement aligné en haut à gauche
Pour iOS 7 c'est ce que j'ai fait et a travaillé pour moi
Swift 2.0: : À L'Aide De UILabel Extension
Font constamment les valeurs de l'enum dans un vide Swift fichier.
À L'Aide De UILabel Extension:
Faire un vide Swift classe et le nom. Ajouter le suivant.
Utilisation :
sampleLabel: UILabel?
?Swift 3 version de @totiG la réponse de
Comment mettre en haut à gauche de l'alignement pour UILabel pour application iOS? L'étiquette de Contenu d'Ensemble de Mode "en Haut à Gauche de travail" pour moi, merci beaucoup: