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

iOS AttributeString(富文本)

2015-11-08 10:50 351 查看

说几句

在 iOS 的开发过程中,label, UITextField 等显示文本的控件使用 AttributeString 是非常常见的,当然如果你的 app 对文字的排版要求比较高,这时候就仅仅使用文本控件的 attributeString 属性就无法满足你的需求,这时最好去使用一些排版引擎(请自行搜索,好吧,相关的引擎我也不熟悉啦)。

有码有真相

/*
*
* 使字符串分成两段不同的字体(大小和颜色)
* @param originString 需要显示不同字体的字符串
* @param firstPartColor 第一段文本的字体颜色
* @param firstPartFont 第一段文本使用的字体(大小,何种字体)
* @param length 第一段文本的长度
* @param secondPartColor 第二段文本的字体颜色
* @param secondPartFont 第二段文本使用的字体(大小,何种字体)
* @param lineSpace 行间距
*
* @return 采用了相关字体的富文本
*/
+ (NSMutableAttributedString *)generateAttributeStringWithString:(NSString *)originString
withFirstPartColor:(UIColor *)firstPartColor
withFirstPartFont:(UIFont *)firstPartFont
withFristPartLength:(NSInteger)length
nwithSecondPartColor:(UIColor *)secondPartColor
withSecondPartFont:(UIFont *)secondPartFont
withLineSpace:(float)lineSpace {
NSMutableAttributedString *attriStr = [[NSMutableAttributedString alloc] initWithString:originString];

[attriStr addAttribute:NSForegroundColorAttributeName
value:firstPartColor
range:NSMakeRange(0, length)];

[attriStr addAttribute:NSFontAttributeName
value:firstPartFont
range:NSMakeRange(0, length)];

long redisualLength = originString.length - length;
[attriStr addAttribute:NSForegroundColorAttributeName
value:secondPartColor
range:NSMakeRange(length, redisualLength)];

[attriStr addAttribute:NSFontAttributeName
value:secondPartFont
range:NSMakeRange(length, redisualLength)];

//调整行间距
NSMutableParagraphStyle *paragraphStyle = [[NSMutableParagraphStyle alloc] init];
[paragraphStyle setLineSpacing:lineSpace];

[attriStr addAttribute:NSParagraphStyleAttributeName
value:paragraphStyle
range:NSMakeRange(0, originString.length)];

return attriStr;
}


来个 demo 截图

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