iOS开发之富⽂本(oc与swift两种都有)
iOS开发中常会遇到让Label的⽂字多样化显⽰,⽐如不同的颜⾊,不同的字体,这就要⽤到所谓的富⽂本,下⾯我已经把⽅法简单封了⼀下,建议⼤家放到单例中调⽤,swift版直接拖到最后⾯看
根据需求使⽤第⼀个或第⼆个⽅法
/**
* 多样性字符串处理
*
* @param original 原始字符串
* @param conversion 需转换的字符串
* @param font 字体
* @param color 颜⾊
*
* @return转换好的字符串
*/
- (NSMutableAttributedString *)diverStringOriginalStr:(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;
}
使⽤⽰例
[UIColor redColor]]
效果
注意:调⽤此⽅法前,必须先创建好Label,并且设置好了默认的字体与颜⾊(就是上图中⿊⾊的字部分)
/**
* 多样性字符串处理(批量处理)
*
* @param original 原始字符串
* @param conversion 需转换的字符串数组
* @param font 字体
* @param color 颜⾊
*
* @return转换好的字符串
*/
- (NSMutableAttributedString *)diverStringOriginalStr:(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 diverStringOriginalStr(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 diverStringOriginalStr(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
}
使⽤⽰例
效果
注意:调⽤此⽅法前,必须先创建好Label,并且设置好了默认的字体与颜⾊(就是上图中⿊⾊的字部分)
批量处理的⽰例
let arr = NSArray(objects: "5,000,","元")
效果