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))
效果
相关文章推荐
- Swift 函数
- swift的一些基本属性8 (字典)
- swift的一些基本属性7 (数组)
- swift的一些基本属性6 (字符串)
- Swift的一些基本属性5 (for循环)
- swift的一些基本属性4 (Switch)
- Swift的一些基本属性3 (可选项)
- Swift的一些基本属性2 (控制流)
- Swift的一些基本属性1 (常量变量)
- OC和Swift 定义属性的一些对比
- swift学习资料
- Swift 基础学习(结构体和类)
- swift 高度自适应方法
- Swift中的循环引用测试验证
- swift - if let Optional 语法
- Swift UITabBarController 基本用法
- Swift 基础学习(枚举基本语法)
- swift - use backslash to add the value in the string
- swift2.0 字符串,数组,字典学习代码
- Swift学习前言准备。