iOS 10.3.1更新打破了一些NSAttributedString属性?

时间:2017-04-24 18:41:06

标签: nsmutableattributedstring ios10.3

我会问,然后回答我自己的问题,希望这会对某人有所帮助。

我们的应用使用NSMutableAttributedString为字符串的某些部分定义删除线属性。

    NSRange range = [fullString rangeOfString:product.originalDeal];
    [dealString addAttribute:NSFontAttributeName value:[UIFont fontWithSize:12] range:range];
    [dealString addAttribute:NSStrikethroughStyleAttributeName value:@1 range:range];
    [dealString addAttribute:NSStrikethroughColorAttributeName value:[UIColor grayColor] range:range];
    [dealString addAttribute:NSForegroundColorAttributeName value:[UIColor grayColor] range:range];

在iOS 10.3中,我们注意到删除线功能不再一致地发生。有时它存在,有时它不存在。

问题:如何让删除线再次起作用?

1 个答案:

答案 0 :(得分:0)

以下是我们修复它的方法:

    [dealString addAttribute:NSBaselineOffsetAttributeName value:@(1) range:range];

位于我们的属性列表的底部。这克服了iOS 10.3和10.2中的问题。

请注意,如果字符串包含元素\n且偏移属性范围包含该元素,则它也会中断(没有删除线)。我们将偏移量应用于字符串的一部分以生成删除线。

其他属性 - 灰色和字体 - 不受影响。