Ios 无法在WKInterfaceLabel上使用NSAttributedString

Ios 无法在WKInterfaceLabel上使用NSAttributedString,ios,objective-c,watchkit,apple-watch,xcode-6.2,Ios,Objective C,Watchkit,Apple Watch,Xcode 6.2,我想在WKInterfaceLabel中显示带下划线的某些字符 NSMutableAttributedString *attrString=[[NSMutableAttributedString alloc] initWithString:@"123.45"]; NSInteger attrStringLength =[attrString length]; NSRange range = NSMakeRange(0, 1); // works NSRange r

我想在WKInterfaceLabel中显示带下划线的某些字符

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];
当范围位置为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];
但是将位置设置为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,并在模拟器中进行测试。

它与您提供的配置完全相同

在动态字符串赋值的情况下,可能存在位置和长度问题,您可能无法获得足够的文本长度,而您正试图使其带下划线

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];