说几句
在 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;
}