【前提】:
最近打算开发一个阅读英语书的小工具软件,
基础的文本读写显示功能,让AI Coder写了一个,
但感觉文本编辑工作的细节比较耗费时间。
虽然,用AI可以完成大部分工作;
但是,在修改使用过程中,感觉AI的Coder,总是对我的需求理解有偏差,
例如:我想让它添加一个缩放控件,仅仅用于控制文本显示窗口,
但它却将整个窗口全部缩放了,包括工具栏也一起缩放了。
感觉:我有必要研究一下使用的开源项目的架构和类的依赖关系,
这样,在让AI的Coder开发的时候,更贴合我的设计意图。
【RichTextEditor】 【分析1】RichTextEditor完整继承关系图
完整继承关系图
SwiftUI
└─ RichTextEditor (struct, ViewRepresentable)
└─ RichTextView (class, NSTextView/UITextView, RichTextViewComponent)
└─ RichTextViewComponent (protocol)
├─ RichTextPresenter (protocol)
│ └─ RichTextReader (protocol)
├─ RichTextAttributeReader (protocol)
│ └─ RichTextReader
├─ RichTextAttributeWriter (protocol)
│ ├─ RichTextWriter (protocol)
│ │ └─ RichTextReader
│ └─ RichTextAttributeReader
├─ RichTextDataReader (protocol)
│ └─ RichTextReader
├─ RichTextImageAttachmentManager (protocol)
│ └─ RichTextReader
└─ RichTextPdfDataReader (protocol)
└─ RichTextReader
总结
RichTextKit通过协议组合和平台桥接,实现了跨平台的富文本编辑功能:
-
核心协议:RichTextReader 和 RichTextWriter 提供基础读写能力
-
功能协议:RichTextAttributeReader、RichTextDataReader 等提供具体功能
-
视图桥接:ViewRepresentable 和 RichTextEditor 实现SwiftUI 与原生视图的桥接
-
平台适配:RichTextView 根据平台继承 NSTextView 或 UITextView
这种设计使得RichTextKit既能保持跨平台一致性,又能充分利用各平台原生能力。