当前位置: 首页 > news >正文

iOS swift-markdown 自定文字颜色

一、核心思路

  1. 解析 Markdown 为 AttributedString:Swift-Markdown 能把 Markdown 字符串转换成 AttributedString(带样式属性的字符串);
  2. 自定义样式规则:通过 MarkdownTextStyle 或直接修改 AttributedString 的属性,给不同 Markdown 元素(标题、正文、加粗、链接等)设置自定义颜色;
  3. 渲染到文本组件:将修改后的 AttributedString 显示在 UILabel/UITextView 等组件上。

二、完整代码示例(iOS 15+ 适配)

Swift-Markdown 是 iOS 15/macOS 12 以上自带的库,无需额外导入第三方,直接用系统 API 即可:
swift
 
 
 
 
 
import UIKit
import Markdown // 系统自带,无需podclass MarkdownColorDemoViewController: UIViewController {override func viewDidLoad() {super.viewDidLoad()view.backgroundColor = .white// 1. 准备Markdown文本let markdownText = """# 自定义标题(红色)这是普通正文(深灰色),**加粗文字(蓝色)**,还支持[链接文字(绿色)](https://www.apple.com)## 二级标题(橙色)"""// 2. 解析Markdown为AttributedStringguard var attributedString = try? AttributedString(markdown: markdownText) else {print("Markdown解析失败")return}// 3. 自定义不同元素的文字颜色customizeMarkdownColor(&attributedString)// 4. 创建UILabel显示效果let label = UILabel()label.frame = CGRect(x: 20, y: 100, width: view.bounds.width - 40, height: 400)label.numberOfLines = 0 // 多行显示label.attributedText = NSAttributedString(attributedString)view.addSubview(label)}/// 自定义Markdown各元素的颜色private func customizeMarkdownColor(_ attributedString: inout AttributedString) {// 遍历所有属性,给不同Markdown元素设置颜色attributedString.runs.forEach { run inswitch run.markdownStyle {// 一级标题case .headingLevel1:run.applyingAttributes {$0.foregroundColor = .red$0.font = .boldSystemFont(ofSize: 24)}// 二级标题case .headingLevel2:run.applyingAttributes {$0.foregroundColor = .orange$0.font = .boldSystemFont(ofSize: 20)}// 加粗文字case .strong:run.applyingAttributes {$0.foregroundColor = .blue}// 链接文字case .link:run.applyingAttributes {$0.foregroundColor = .green$0.underlineStyle = .single // 链接加下划线}// 普通正文(默认样式)default:run.applyingAttributes {$0.foregroundColor = .darkGray$0.font = .systemFont(ofSize: 16)}}}}
}
 

三、关键代码解释

  1. Markdown 解析AttributedString(markdown:) 是系统核心 API,能自动把 Markdown 语法转换成带默认样式的富文本;
  2. 样式自定义
    • attributedString.runs 会遍历富文本的每一个 “样式段”(比如一段加粗文字、一个标题);
    • run.markdownStyle 能识别当前段的 Markdown 类型(标题、加粗、链接等);
    • applyingAttributes 可以给对应段设置自定义颜色、字体等属性;
  3. 适配说明:该方式仅支持 iOS 15+,如果需要兼容更低版本,可使用第三方库(如 Down)解析 Markdown 后再修改富文本颜色。

四、扩展:批量设置全局样式(简化版)

如果只需要统一修改某类样式(比如所有文字默认颜色),也可以直接修改 AttributedString 的属性,无需遍历:
swift
 
 
 
 
 
// 直接设置所有文字的默认颜色(未单独指定的元素会用这个颜色)
attributedString.foregroundColor = .darkGray
// 单独给加粗文字改色
attributedString.replaceAttributes(.strong) {$0.foregroundColor = .blue
}
 

总结

  1. Swift-Markdown 自定义颜色的核心是解析为 AttributedString 后,针对不同 Markdown 样式段设置 foregroundColor
  2. 通过 run.markdownStyle 可精准区分标题、加粗、链接等元素,实现精细化配色;
  3. 该方案基于系统 API,无需第三方库,适配 iOS 15+ 项目,简单高效。
http://www.gsyq.cn/news/153267.html

相关文章:

  • Linux 中 如何将文本每行中最后一个出现的指定字符替换为特定的字符
  • 小红书聚光项目:开启营销新征程
  • 上位机学习第一天20251225
  • Shell脚本——打印日志颜色
  • 在这个充满噪音的时代,如何做自己身体的“首席架构师”?
  • 2026年软件测试趋势预测:测试工程师的危与机
  • Java计算机毕设之基于springboot的校园传统文化交流系统强化传统文化与校园生活的融合(完整前后端代码+说明文档+LW,调试定制等)
  • Java springboot 整合敏感词筛查【sensitive-word实现】
  • Open-AutoGLM模型部署难题全攻克,手把手教你7步完成本地化运行
  • 为什么你的Open-AutoGLM总是启动失败?这7个关键点必须检查
  • 初中数学培训机构怎么选?考纲考点精讲 + 奥赛辅导 + 周末班,适配不同需求 - 速递信息
  • 为什么90%的Open-AutoGLM部署都忽略了这3个核心配置?
  • Open-AutoGLM模型性能实测:在消费级显卡上跑出媲美商用模型的效果?
  • 提升用户体验之监控页面性能
  • 基于Blazor实现的样品扫码比对管理系统
  • 从“听话的孩子”到“会提问的孩子”:家庭如何塑造真正的学习力
  • 两期联动,深度合作!神驰机电集团IMS项目二期启动,盘古信息助力数字化工厂再升级
  • 错过将淘汰!Open-AutoGLM级AI正在取代传统开发模式
  • 计算机Java毕设实战-基于springboot的校园传统文化交流系统传统舞蹈、传统戏剧、曲艺、传统制作技艺【完整源码+LW+部署说明+演示视频,全bao一条龙等】
  • 【智谱 Open-AutoGLM 电脑版深度解析】:揭秘国产AI编程神器的5大核心功能与实战应用场景
  • Open-AutoGLM Mac部署实战(从环境配置到模型推理全解析)
  • 2025年工业吸盘选型指南:柔触机器人提供哪些柔性吸附选择? - 品牌2025
  • 为何选择网站建设工具?7 大核心价值解析
  • 【国产AI工具崛起】:智谱 Open-AutoGLM 电脑版实测性能提升80%的秘密
  • 【专家级避坑指南】:Open-AutoGLM环境搭建常见错误及最佳实践
  • 智谱·Open-AutoGLM智能体技术内幕(20年专家亲授架构设计精髓)
  • 2025年市面上热门的制冷设备定制厂家推荐榜,圆形逆流冷却塔/方形逆流冷却塔/玻璃钢冷却塔,制冷设备源头厂家排行榜 - 品牌推荐师
  • 2025年探寻优质夹爪之选:苏州柔触机器人科技有限公司 - 品牌2025
  • Java毕设项目:基于springboot的校园传统文化交流系统(源码+文档,讲解、调试运行,定制等)
  • (Open-AutoGLM部署避坑大全):资深架构师亲述5年踩坑经验总结