我有一个不可变的属性字符串,没有NSStrikethroughStyleAttributeName属性,如下所示:
NSMutableAttributedString *str1 = [[NSMutableAttributedString alloc] initWithString:@"aaaa" attributes:@{NSStrikethroughStyleAttributeName:[NSNumber numberWithInteger:NSUnderlineStyleSingle]}];
Run Code Online (Sandbox Code Playgroud)
和另一个带有NSStrikethroughStyleAttributeName属性的可变属性字符串,如下所示:
NSMutableAttributedString *str2 = [[NSMutableAttributedString alloc] initWithString:@"bbbb"];
Run Code Online (Sandbox Code Playgroud)
以及包含上面两个字符串的整个字符串:
NSMutableAttributedString *labelString = [[NSMutableAttributedString alloc] init];
[labelString appendAttributedString:str1];
[labelString appendAttributedString:str2];
Run Code Online (Sandbox Code Playgroud)
当我将整个字符串附加到UILabel时:
_label.attributedText = labelString;
Run Code Online (Sandbox Code Playgroud)
它在iOS7和iOS8中都表现良好,如下所示:
AAAABBBB
但是当我交换他们的职位时:
[labelString appendAttributedString:str2];
[labelString appendAttributedString:str1];
Run Code Online (Sandbox Code Playgroud)
它在iOS7中正确显示,但在iOS8中没有正确显示
ios7:bbbbAAAA ios8:bbbbaaaa
似乎在iOS8中,如果属性字符串中的第一个字符不是strikethroughed,则UILabel不会正确渲染删除线.我认为这是iOS8中的一个错误,是否有人遇到过与我相同的问题?
nsattributedstring strikethrough ios nsmutableattributedstring ios8