您的位置:首页 > 移动开发 > Swift

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

2016-03-08 17:30 288 查看

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

效果

内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: