iOS UILabel多色文本实现

UILabel 的多色文本显示技巧,蛮实用的一个小功能。你有没有遇到过那种一个标签里要显示不同颜色的文字,比如“成功”用绿色,“失败”用红色?其实用NSMutableAttributedString就能轻松搞定。

iOS 的UILabel虽然默认只支持一种颜色,但你可以通过富文本把想要高亮的关键词单独拿出来一下。方法也简单,先用NSMutableAttributedString包住整段文字,再对你想改颜色的部分添加.foregroundColor属性,把它赋值给label.attributedText就行了。

像这样:

let text = "这是一个例子,其中某些部分需要是红色,而其他部分是黑色。"
let attributedString = NSMutableAttributedString(string: text)
let redRange = (text as NSString).range(of: "红色")
attributedString.addAttributes([.foregroundColor: UIColor.red], range: redRange)
label.attributedText = attributedString

如果你想加点玩法,比如动态设置、按条件变色,那就可以用enumerateAttribute(_:in:options:using:)来做遍历修改,灵活度挺高。

顺便说一下,压缩包ZiTiLabel里有完整示例,直接跑项目就能看到效果,新手也能轻松上手。如果你经常在做消息展示、关键词高亮这种场景,不妨试试看这个方案。

如果你还想深入了解NSMutableAttributedString的用法,推荐你看看这篇文章,讲得挺细的。

zip 文件大小:68.67KB