前几天使用ios 10.3跑自己的项目程序,结果发现使用富文本为label添加删除线全部失效,但是在10.3系统以下就一切正常,这应该是苹果系统的一个bug。
根本原因:Label上的文字只要包含有“中文”,富文本字符串的中划线就会失效,我们可通过以下两种方式解决。
第一种方式:人民币符号“¥”和“¥”,使用前面一个即可。
NSString*market = [NSStringstringWithFormat:@"¥%@",@"500"];
NSMutableAttributedString *attributeMarket = [[NSMutableAttributedString alloc] initWithString:market];
[attributeMarket setAttributes:@{NSStrikethroughStyleAttributeName: [NSNumbernumberWithInteger:NSUnderlineStyleSingle]} range:NSMakeRange(0,market.length)];
_marketLabel.attributedText= attributeMarket;
第二种方式:让富文本支持“中文”
增加一个富文本属性:
NSBaselineOffsetAttributeName : @(NSUnderlineStyleSingle)
NSString*market = [NSStringstringWithFormat:@"¥%@",@"500"];
NSMutableAttributedString *attributeMarket = [[NSMutableAttributedString alloc] initWithString:market];
[attributeMarket setAttributes:@{NSStrikethroughStyleAttributeName: [NSNumbernumberWithInteger:NSUnderlineStyleSingle], NSBaselineOffsetAttributeName : @(NSUnderlineStyleSingle)} range:NSMakeRange(0,market.length)];
_marketLabel.attributedText= attributeMarket;
我这边使用的是第二种方法,因为项目中人民币符号是由服务端传过来的,因此第二种方法适合我自己,其他可以按情况使用一种方法解决这个bug,苹果应该会在下个版本中修复这个bug。
网友评论