iOS开发,解决UILabel中划线失效的问题

根本原因:

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];

最后编辑于
©著作权归作者所有,转载或内容合作请联系作者
平台声明:文章内容(如有图片或视频亦包括在内)由作者上传并发布,文章内容仅代表作者本人观点,简书系信息发布平台,仅提供信息存储服务。

推荐阅读更多精彩内容