dji*_*i33 6 objective-c nsattributedstring uilabel ios nsmutableattributedstring
我已经看了大约10个关于SO的问题,而且我仍然很短.
我有一个多行UILabel(在Interface Builder中创建,numberOfLines设置为0),它通常像这样呈现:

我想强调"服务条款"和"隐私政策",所以我添加了以下代码:
NSString *text = self.agreement.text;
NSMutableAttributedString *aString = [[NSMutableAttributedString alloc] initWithString:text];
NSRange privacyRange = [text rangeOfString:@"privacy policy" options:NSCaseInsensitiveSearch];
[aString addAttribute:NSUnderlineStyleAttributeName value:@(NSUnderlineStyleSingle) range:privacyRange];
NSRange tosRange = [text rangeOfString:@"terms of service" options:NSCaseInsensitiveSearch];
[aString addAttribute:NSUnderlineStyleAttributeName value:@(NSUnderlineStyleSingle) range:tosRange];
self.agreement.attributedText = aString;
Run Code Online (Sandbox Code Playgroud)
但结果如下:

我需要做什么才能显示这两行,并用适当的范围加下划线?
此外,我不想使用像OHAttributedLabel或TTTAttributedLabel这样的第三方库,因为这是我的应用中唯一需要为一段文字加下划线的地方.
我试过的
sizeToFit设置属性文本后调用numberOfLines和lineBreakMode代码Sascha让我上传了两个截图,背景颜色设置为清除之外的其他颜色.奇怪的是,一切都按预期显示!不知道该怎么做或这告诉我们什么.

所以昨天,根据 tsafrir 的评论(iOS 7 bug,应该在 7.1 中修复),我将这两行分成两个标签并继续。
然后,SashaHameister 建议我看看当我应用不清晰的背景颜色时会发生什么。因此,我删除了顶部标签,将文本添加到第二个标签中,使其成为两行,更改背景颜色,并且两行都呈现良好。我认为这就是解决方案(尽管它行不通,因为我需要一个清晰的背景)。
之后,我尝试将其改回清除,它仍然对我有用。事实证明,这与我的标签尺寸有关。我的两行标签的高度约为 75,远远超出了 11 磅字体的两行标签所需的高度。由于我昨天所做的调整(将线条分成两个标签),当我将第一个标签的文本复制并粘贴到第二个标签时,高度最终仅为 48px,并且渲染得很好。
我仍然不知道为什么这会产生如此大的影响,但如果您遇到同样的问题,很可能您的标签高度比需要的要大。尝试尽可能减少它并尽可能紧贴实际文本。
| 归档时间: |
|
| 查看次数: |
4390 次 |
| 最近记录: |