美文网首页iOS 开发技巧Mac开发云集iOS高阶UI相关
解决使用NSMutableAttributedString 设置

解决使用NSMutableAttributedString 设置

作者: 为之则易ing | 来源:发表于2016-08-17 17:51 被阅读1434次
    • 问题描述
      使用NSMutableAttributedString设置不同字体,
    int a = 50; int b = 10;
      NSMutableAttributedString *attStr = [[NSMutableAttributedString alloc] initWithString:@"10元抵现券"]; 
    [attStr addAttribute:NSFontAttributeName value:[UIFont systemFontOfSize:a] range:NSMakeRange(0, 2)];
     [attStr addAttribute:NSFontAttributeName value:[UIFont systemFontOfSize:b] range:NSMakeRange(2, attStr.length - 2)];
    // [attStr addAttribute:NSBaselineOffsetAttributeName value:@(0.36 * (a - b)) range:NSMakeRange(2, attStr.length - 2)]; 
    label.attributedText = attStr;
    
    

    文字不能居中对齐;如图:

    这里写图片描述
    • 解决方法
      NSMutableAttributedString 添加NSBaselineOffsetAttributeName这个Attribute
    [attStr addAttribute:NSBaselineOffsetAttributeName value:@(0.36 * (a - b)) range:NSMakeRange(2, attStr.length - 2)];
    
    

    value = 0.36 * (大字号 - 小字号)

     int a = 50; 
    int b = 10; 
     NSMutableAttributedString *attStr = [[NSMutableAttributedString alloc] initWithString:@"10元抵现券"]; 
    [attStr addAttribute:NSFontAttributeName value:[UIFont systemFontOfSize:a] range:NSMakeRange(0, 2)]; 
    [attStr addAttribute:NSFontAttributeName value:[UIFont systemFontOfSize:b] range:NSMakeRange(2, attStr.length - 2)];
     [attStr addAttribute:NSBaselineOffsetAttributeName value:@(0.36 * (a - b)) range:NSMakeRange(2, attStr.length - 2)]; 
    label.attributedText = attStr;
    
    
    • 效果图 这里写图片描述

    相关文章

      网友评论

      本文标题:解决使用NSMutableAttributedString 设置

      本文链接:https://www.haomeiwen.com/subject/jcgmsttx.html