1. 程式人生 > >iOS10.3中劃線失效

iOS10.3中劃線失效

    NSString *price = @"¥12.3 ¥23.4";//[NSString stringWithFormat: @"¥%@ ¥%@  %@",goodsItemPrice,goodsItemOriginPrice,numByUserStr]  ;
    NSMutableAttributedString *currentPriceStr = [[NSMutableAttributedString alloc] initWithString:price];
    [currentPriceStr addAttributes:@{NSFontAttributeName:[UIFont systemFontOfSize:13],NSForegroundColorAttributeName:[UIColor blackColor]} range:NSMakeRange(0, 5)];
    [currentPriceStr addAttributes:@{NSFontAttributeName:[UIFont systemFontOfSize:12],NSForegroundColorAttributeName:[UIColor greenColor]} range:NSMakeRange(6, 5)];
    [currentPriceStr addAttributes:@{NSStrikethroughStyleAttributeName:@(NSUnderlinePatternSolid | NSUnderlineStyleSingle)} range:NSMakeRange(6, 5)];
    self.goodsPrice.attributedText = currentPriceStr;

 上面一段程式碼原本是有後麵價格是有中劃線的,但是到iOS10.3就無效了。

後測試發現:

1、字串中有中文字元就會設定失效;

2、對字串部分設定中劃線也失效了。

修復:

方法一、假如對一整段設定中劃線,只要沒有中文字串就行,用“¥”替代“¥”。

方法二、這個比較通用,不管有沒有中文還是部分字串設定都可以的,增加一個富文字屬性: NSBaselineOffsetAttributeName : @(NSUnderlineStyleSingle)