J'ai donc deux UILabels côte à côte dans Storyboard. La deuxième étiquette doit venir en butée contre le bord droit de la première (contrainte de fin de 1), mais j'ai également besoin de la première étiquette (celle de gauche) pour que sa largeur soit égale à la taille de son contenu, sauf si elle atteint une largeur maximale. . Visuellement:
| Étiqueter un texte | | Libellez deux textes |
Et j'ai besoin des contraintes suivantes:
1) Une étiquette doit être redimensionnée en largeur sauf si elle atteint une taille maximale.
2) L'étiquette deux doit toujours être collée contre le bord droit de l'étiquette un
Comment puis-je configurer cela dans Storyboard?
label2
Vers label1
. Choisissez l’espacement horizontal dans la fenêtre contextuelle. Double-cliquez sur la contrainte. Remplacez la constante par 1.label1
Une largeur maximale: Sélectionnez label1
. Accédez à la barre de menus supérieure, sélectionnez Editeur> Broche> Largeur. Double-cliquez sur la contrainte. Modifiez la relation en <= et modifiez la constante en largeur maximale.label1
À 32 points du bord gauche de la vue racine et à 34 points du guide de disposition supérieur.Remarque: Notez que je n'ai pas eu à créer de contrainte pour que la largeur de label1
Reflète la taille de son contenu. Les contraintes de dimensionnement du contenu sont générées automatiquement.
S'il vous plaît d'abord obtenir textSize avec le code ci-dessous:
CGSize textSize = { 230.0, 10000.0 };
CGSize size = [[NSString stringWithFormat:@"%@", yourLabelText]
sizeWithFont:[UIFont systemFontOfSize:10]
constrainedToSize:textSize
lineBreakMode:NSLineBreakByWordWrapping];
puis définissez votre premier cadre d'étiquette avec cette taille de contenu:
UILabel *lblFirst = [[UILabel alloc] initWithFrame:CGRectMake(X, Y, W, size.height)];
lblFirst.lineBreakMode = YES;
lblFirst.lineBreakMode = NSLineBreakByWordWrapping;
lblFirst.numberOfLines =size.height;
lblFirst.backgroundColor = [UIColor clearColor];
[self.view addSubview:lblFirst];
alors la deuxième étiquette Frame sera:
UILabel *lblFirst = [[UILabel alloc]
initWithFrame:CGRectMake(lblFollowerName.frame.size.width + lblFollowerName.frame.Origin.x, Y, W, H)];