如何正确获取UITextView的attributedText富文本并保留原有颜色追加内容
问题原因说明
你现有代码的问题在于,使用text_recepty.text(纯文本类型)初始化富文本对象,会直接丢失原文本所有的颜色、字体等样式配置,这就是原有样式无法保留的核心原因。
正确实现方案
要保留原有富文本样式,直接读取text_recepty.attributedText即可,无需通过纯文本重新生成,具体实现如下:
var toastcolor: UIColor = UIColor.black var toast: String = "TEST..." if ChodButtonisOn == true { toastcolor = UIColor(red: 118/255, green: 110/255, blue: 38/255, alpha: 1.0) } else { if HalfButtonisOn == true { toastcolor = UIColor(red: 240/255, green: 127/255, blue: 18/255, alpha: 1.0) } } // 核心修正:直接读取原有带样式的富文本,同时做非空兼容处理 let text1 = NSMutableAttributedString(attributedString: text_recepty.attributedText ?? NSAttributedString()) let attr2 = [NSAttributedString.Key.foregroundColor: toastcolor] let text2 = NSAttributedString(string: toast + "\n", attributes: attr2) text1.append(text2) text_recepty.attributedText = text1
补充注意点
- 如果需要追加的文本除了颜色还有其他样式需求,直接在
attr2字典中添加对应NSAttributedString.Key配置即可 - 如果你后续需要操作富文本的局部样式,也可以基于
NSMutableAttributedString的addAttributes(_:range:)方法做指定范围的样式修改
内容的提问来源于stack exchange,提问作者Codl
相关产品推荐
相关产品推荐

