Je veux que l'étiquette ci-dessous (en jaune) soit au moins deux lignes plutôt qu'une.UILabel ne pas dessiner multiligne
Je me suis assuré de décocher Use Autolayout
dans Interface Builder. Lorsque je mets numberOfLines
de 0 à 2, je reçois deux mots empilés les uns sur les autres, avec le fond jaune qui correspond bien aux mots. Le résultat est le même, que le lineBreakMode
soit NSLineBreakByWordWrapping
ou NSLineBreakByTruncatingTail
. C'est également pareil si je mets le cadre des termes Label en utilisant le résultat de sizeWithAttributes
ou pas, et c'est pareil si j'utilise sizeToFit
ou non. J'ai également essayé de faire l'étiquette un UILabel
plutôt qu'une sous-classe de UILabel
, qui est TTTAttributedLabel
, mais le résultat est le même.
_termsLabel.font = [UIFont systemFontOfSize:12];
_termsLabel.textColor = [UIColor grayColor];
_termsLabel.textAlignment = NSTextAlignmentCenter;
_termsLabel.lineBreakMode = NSLineBreakByWordWrapping;
_termsLabel.numberOfLines = 0;
_termsLabel.delegate = self;
_termsLabel.backgroundColor = [UIColor yellowColor];
// Terms label
NSString *termsText = [NSString stringWithFormat:@"%@ %@ %@ %@", NSLocalizedString(@"TermsIAgree", nil),
NSLocalizedString(@"SettingsTOS", nil),
NSLocalizedString(@"LocalizedAnd", nil),
NSLocalizedString(@"SettingsPrivacyPolicy", nil)];
_termsLabel.text = termsText;
_termsLabel.linkAttributes = @{ (__bridge NSString *)kCTUnderlineStyleAttributeName : [NSNumber numberWithBool:YES]};
CGSize termsSize = [_termsLabel.text sizeWithAttributes: @{ NSFontAttributeName : _termsLabel.font}];
_termsLabel.frame = CGRectMake(65,
395,
termsSize.width, termsSize.height);
[_termsLabel addLinkToURL:[NSURL URLWithString:TOS_URL] withRange:[termsText rangeOfString:NSLocalizedString(@"SettingsTOS", nil)]];
[_termsLabel addLinkToURL:[NSURL URLWithString:PRIVACY_POLICY_URL] withRange:[termsText rangeOfString:NSLocalizedString(@"SettingsPrivacyPolicy", nil)]];
EDIT: En trouvant la taille du texte des termes en utilisant CGSize termsSize = [_termsLabel.text sizeWithFont:_termsLabel.font forWidth:200 lineBreakMode:NSLineBreakByWordWrapping];
Pourtant, le height
du termsSize
est alors 14
, entraînant une seule ligne:
Comment puis-je obtenir la deuxième ligne? SOLUTION À ce stade, ajoutez simplement [_termsLabel sizeToFit]
.
Est-ce que la taille de 'termsSize' correspondent à la taille de l'étiquette? Ou est-ce que le cadre change à un moment donné? –
Voir ma modification. . . –