无法在WKInterfaceLabel上使用NSAttributedString

时间:2015-04-13 11:09:39

标签: ios objective-c watchkit apple-watch xcode-6.2

我想在WKInterfaceLabel中显示某些字符作为下划线。

当范围位置为0(=字符串的开头)时,无论长度如何,它都能正常工作 - 范围中的字符带下划线。

但是将位置设置为除0以外的任何其他值都不起作用 - 没有任何下划线。

NSMutableAttributedString *attrString=[[NSMutableAttributedString alloc] initWithString:@"123.45"];
NSInteger attrStringLength =[attrString length];

NSRange range = NSMakeRange(0, 1);                // works
NSRange range = NSMakeRange(0, 2);                // works
NSRange range = NSMakeRange(0, attrStringLength); // works
NSRange range = NSMakeRange(1, 1); // does not work
NSRange range = NSMakeRange(2, 2); // does not work

[attrString addAttributes:@{
                            NSUnderlineStyleAttributeName : @(NSUnderlineStyleSingle | NSUnderlinePatternSolid) // style
                            }
                    range:range];

[self.valueLabel setAttributedText:attrString];

还有其他人有这个问题吗?我在Xcode 6.2 iOS 8.2上并在模拟器中进行测试。

1 个答案:

答案 0 :(得分:0)

它与您提供的相同配置完美配合。

如果动态字符串分配,可能存在位置和长度问题,您可能无法获得足够长的文本,而您正在尝试使用下划线。