iOS开发之富文本(oc与swift两种都有)

5 篇文章 0 订阅
3 篇文章 0 订阅

iOS开发中常会遇到让Label的文字多样化显示,比如不同的颜色,不同的字体,这就要用到所谓的富文本,下面我已经把方法简单封了一下,建议大家放到单例中调用,swift版直接拖到最后面看

      

根据需求使用第一个或第二个方法

/**

 *  多样性字符串处理

 *

 *  @param original   原始字符串

 *  @param conversion 需转换的字符串

 *  @param font       字体

 *  @param color      颜色

 *

 *  @return 转换好的字符串

 */

- (NSMutableAttributedString *)diverseStringOriginalStr:(NSString *)original conversionStr:(NSString *)conversion withFont:(UIFont *)font withColor:(UIColor *)color

{

    original = [NSString nullToString:original]; //非空判断,可以删了,记得不要传空就行

    conversion = [NSString nullToString:conversion]; //非空判断,可以删了,记得不要传空就行

    

    NSMutableAttributedString * str = [[NSMutableAttributedString alloc] initWithString:original];

    

    NSRange range = [original rangeOfString:conversion];

    [str addAttribute:NSForegroundColorAttributeName value:color range:range];

    [str addAttribute:NSFontAttributeName value:font range:range];

    return str;

}


使用示例

self.contentLabel.attributedText = [self diverseStringOriginalStr:@"招商银行(尾号1802 储蓄卡)" conversionStr:@"(尾号1802 储蓄卡)" withFont:[UIFont systemFontOfSize:14] withColor:

[UIColor redColor]]



效果

注意:调用此方法前,必须先创建好Label,并且设置好了默认的字体与颜色(就是上图中黑色的字部分)


/**

 *  多样性字符串处理(批量处理)

 *

 *  @param original   原始字符串

 *  @param conversion 需转换的字符串数组

 *  @param font       字体

 *  @param color      颜色

 *

 *  @return 转换好的字符串

 */


- (NSMutableAttributedString *)diverseStringOriginalStr:(NSString *)original conversionStr:(NSString *)conversion withFont:(UIFont *)font withColor:(UIColor *)color

{

    original = [NSString nullToString:original];

    conversion = [NSString nullToString:conversion];

    

    NSMutableAttributedString * str = [[NSMutableAttributedString alloc] initWithString:original];

    

    NSRange range = [original rangeOfString:conversion];

    [str addAttribute:NSForegroundColorAttributeName value:color range:range];

    [str addAttribute:NSFontAttributeName value:font range:range];

    return str;

}



swift版

/**

     *  多样性字符串处理

     *

     *  @param original   原始字符串

     *  @param conversion 需转换的字符串

     *  @param font       字体

     *  @param color      颜色

     *

     *  @return 转换好的字符串

     */

    func diverseStringOriginalStr(original : String,conversionStr conversion : String,withFont font : UIFont,withColor color : UIColor) ->NSMutableAttributedString{

        

        let range : NSRange = (original as NSString).rangeOfString(conversion as String)

        let str = NSMutableAttributedString(string: original as String)


        str.addAttribute(NSForegroundColorAttributeName, value: color, range: range)

        str.addAttribute(NSFontAttributeName, value: font, range: range)

        return str

    }

    

    /**

     *  多样性字符串处理(批量处理)

     *

     *  @param original   原始字符串

     *  @param conversion 需转换的字符串数组

     *  @param font       字体

     *  @param color      颜色

     *

     *  @return 转换好的字符串

     */

    func diverseStringOriginalStr(original : String,conversionStrArr conversionArr : NSArray,withFont font : UIFont,withColor color : UIColor) ->NSMutableAttributedString{

        

        let str = NSMutableAttributedString(string: original as String)

        

        for subStr in conversionArr{

            let range : NSRange = (original as NSString).rangeOfString(subStr as! String)

            

            str.addAttribute(NSForegroundColorAttributeName, value: color, range: range)

            str.addAttribute(NSFontAttributeName, value: font, range: range)

        }

        return str

    }


使用示例

self.contentLabel.attributedText = self.diverseStringOriginalStr("招商银行(尾号1802 储蓄卡)", conversionStr: "(尾号1802 储蓄卡)", withFont: UIFont.systemFontOfSize(14), withColor: UIColor.redColor())


效果


注意:调用此方法前,必须先创建好Label,并且设置好了默认的字体与颜色(就是上图中黑色的字部分)


批量处理的示例

let arr = NSArray(objects: "5,000,","")

self.moneyLabel.attributedText = DataProcessing.sharedManager.diverseStringOriginalStr("5,000,000", conversionStrArr: arr, withFont:UIFont.systemFontOfSize(14), withColor: UIColor(red: 255/255.0, green: 93/255.0, blue: 73/255.0, alpha: 1.0))


效果



  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值