You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

如何正确获取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

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.09.29 14:27:03