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

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))


效果



你可能感兴趣的:(iOS,xcode7,swift,ios,swift,解决方案,ios开发,字体)