Я хочу, чтобы метка ниже (в желтом) была как минимум двумя строками, а одна.UILabel not drawing multiline
Я удостоверился, чтобы снять Use Autolayout
в Interface Builder. Когда я устанавливаю numberOfLines
от 0 до 2, я получаю два слова, уложенных друг на друга, с желтым фоном, плотно подгоняющим слова. Результат тот же, независимо от того, является ли lineBreakMode
NSLineBreakByWordWrapping
или NSLineBreakByTruncatingTail
. Это тоже то же самое, если я устанавливаю фрейм терминов «Ярлык», используя результат sizeWithAttributes
или нет, и это то же самое, если я использую sizeToFit
или нет. Я также попытался сделать ярлык UILabel
, а не подклассом UILabel
, который является TTTAttributedLabel
, но результат тот же.
_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: Находя термины размер текста, используя CGSize termsSize = [_termsLabel.text sizeWithFont:_termsLabel.font forWidth:200 lineBreakMode:NSLineBreakByWordWrapping];
все же height
из termsSize
затем 14
, в результате чего только в одной строке:
Как я могу получить второе линия? РЕШЕНИЕ На этом этапе просто добавьте [_termsLabel sizeToFit]
.
ли размер 'termsSize' соответствует размеру этикетки? Или кадр меняется в какой-то момент? –
См. Мое редактирование. , , –