根本原因:
iOS10.3以后才出现这种问题,可能是系统的bug。
只要label的文字有中文,富文本字符串的中划线就会失效。
解决办法:
第一种:字符串中的符号,换成英文状态的符号
如:人民币符号“¥”和“¥”,使用前面一个即可。
第二种:让富文本支持“中文”
增加一个富文本属性:NSBaselineOffsetAttributeName : @(NSUnderlineStyleSingle)
代码:
NSString *textContent = @"原价:500元";
//label
CGFloat labelW = self.view.frame.size.width-20*2;
CGFloat labelH = 300;
UILabel *testLabel = [[UILabel alloc] initWithFrame:CGRectMake(20, 100, labelW, labelH)];
//多行显示
testLabel.numberOfLines = 0;
testLabel.backgroundColor = [UIColor whiteColor];
[self.view addSubview:testLabel];
//富文本属性
NSMutableDictionary *textDict = [NSMutableDictionary dictionary];
//字体颜色
textDict[NSForegroundColorAttributeName] = [UIColor lightGrayColor];
//字号大小
textDict[NSFontAttributeName] = [UIFont systemFontOfSize:16.0];
//中划线
textDict[NSStrikethroughStyleAttributeName] = [NSNumber numberWithInteger:NSUnderlineStyleSingle];
//支持中文
textDict[NSBaselineOffsetAttributeName] = @(NSUnderlineStyleSingle);
//赋值
testLabel.attributedText = [[NSAttributedString alloc] initWithString:textContent attributes:textDict];