2

我希望下面的标签(黄色)至少是两行而不是一行。

问题

我确保Use Autolayout在 Interface Builder 中取消选中。当我设置numberOfLines从 0 到 2 时,我得到两个单词堆叠在一起,黄色背景与单词紧密贴合。无论lineBreakModeNSLineBreakByWordWrapping还是,结果都是一样的NSLineBreakByTruncatingTail。使用与否的结果设置术语Label的框架也是一样的,使用与否sizeWithAttributes也是一样的。sizeToFit我也尝试过将标签设为 aUILabel而不是 的子类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)]];

编辑CGSize termsSize = [_termsLabel.text sizeWithFont:_termsLabel.font forWidth:200 lineBreakMode:NSLineBreakByWordWrapping]; :通过使用Yet heightof the termsSizeis then查找术语文本大小14,仅生成一行:

在此处输入图像描述

我怎样才能得到第二行?解决方案此时,只需添加[_termsLabel sizeToFit].

4

2 回答 2

2

如果您有静态文本,只需将中断模式设置为换行,将行设置为您想要的数字,然后在界面生成器中调整标签的框架,直到它以您喜欢的方式换行。你有动态文本,你可以sizeToFit在设置标签的文本后使用它自动调整它的高度以适应指定的宽度:

  1. 将框架设置为所需的最大宽度
  2. 将行设置为 0
  3. 设置中断模式为换行
  4. 称呼sizeToFit
于 2013-08-31T23:04:17.717 回答
1

确定标签的最大宽度并sizeWithFont:forWidth:lineBreakMode:使用此值尝试方法,并希望NSLineBreakMode获得结果字符串边界框的大小。

于 2013-08-31T22:01:41.443 回答