docs: 同步 Doc 文档与当前代码状态

- 更新模块文件数(EPUBCore 31+2, EPUBTextRendering 13, ReaderView 5, EPUBUI 19)
- 更新 Swift 版本(5.10)、iOS 版本(15.0)、行数等基本信息
- 补充新增文件文档(TextAnchor, RenderRequest, WebViewDebug, AssetRepository,
  TextIndexTable, TextPerformanceSampler, ChapterData, PageInteractionController 等)
- 更新 RDEPUBLocation 模型(新增 rangeAnchor 字段)
- 更新 RDEPUBReaderConfiguration(13 项配置)、Delegate 签名、Persistence(8 方法)
- 修正 RDURLReaderController 归属(ReaderView → EPUBUI)
- 移除过时的 LegacyRDReaderController 引用
- 标记 SS→RD 命名迁移为已完成
This commit is contained in:
shen
2026-05-25 20:31:10 +08:00
parent 54798ba578
commit c0aac56083
8 changed files with 208 additions and 92 deletions
+25 -18
View File
@@ -4,8 +4,8 @@
RDReaderView 是一个 iOS 阅读器组件库(CocoaPods),提供开箱即用的 EPUB 阅读能力,并保留对纯文本翻页的支持。
- **最低 iOS 版本**15.0podspec 仍标注 9.0,实际 demo Podfile 要求 15.0
- **Swift 版本**5.0+
- **最低 iOS 版本**15.0
- **Swift 版本**5.10+
- **依赖**ZIPFoundationEPUB 解压)、DTCoreText(文本 EPUB 渲染)
- **Demo 额外依赖**SnapKit、SSAlertSwift
@@ -21,10 +21,13 @@ RDReaderView 是一个 iOS 阅读器组件库(CocoaPods),提供开箱即
┌───────────────────────────▼─────────────────────────────┐
│ EPUBUI 层(library 级读者 UI
│ RDEPUBReaderController(开箱即用入口
│ RDEPUBReaderConfiguration / Theme / Persistence
│ TopToolView / BottomToolView / ChapterList / Settings
│ RDEPUBReaderController(开箱即用入口~1995 行)
│ RDEPUBReaderConfiguration / Theme / Settings / Persistence│
│ TopToolView / BottomToolView / ToolView 基类
│ ChapterList / Highlights / Bookmarks / Settings 面板 │
│ RDEPUBTextContentView / RDEPUBWebContentView │
│ RDEPUBPageInteractionController / SelectionOverlayView │
│ RDEPUBPageLayoutSnapshot / RDURLReaderController │
└───────────────────────────┬─────────────────────────────┘
┌───────────────────────────▼─────────────────────────────┐
@@ -40,10 +43,13 @@ RDReaderView 是一个 iOS 阅读器组件库(CocoaPods),提供开箱即
│ EPUBCore 层(EPUB 引擎) │
│ │
│ Publication 层 │
│ RDEPUBParser+Archive / +Package / +TOC / …)
│ RDEPUBParser+Archive / +Package / +TOC /
│ +ReadingProfile / +Resources
│ RDEPUBPublication(出版物聚合对象) │
│ RDEPUBModelsmetadata / manifest / spine 模型) │
│ RDEPUBReadingModelslocation / viewport / highlight
│ RDEPUBTextAnchor / RDEPUBTextRangeAnchor(文本锚点) │
│ RDEPUBRenderRequest(渲染请求模型) │
│ │
│ Services 层 │
│ RDEPUBResourceResolver(资源 URL 统一入口) │
@@ -57,11 +63,12 @@ RDReaderView 是一个 iOS 阅读器组件库(CocoaPods),提供开箱即
│ │
│ Resource View 层 │
│ RDEPUBWebView+Configuration / +Reflowable / │
│ +FixedLayout / +JavaScriptBridge
│ +FixedLayout / +JavaScriptBridge /
│ +Search
│ RDEPUBResourceURLSchemeHandlerss-reader:// 协议) │
│ RDEPUBStyleSheetBuilder / RDEPUBJavaScriptBridge │
│ RDEPUBFixedLayoutTemplate / RDEPUBAssetRepository │
│ RDEPUBRenderRequest
│ RDEPUBWebViewDebug(调试日志工具)
│ │
│ Search 层 │
│ RDEPUBSearchEngine(协议)/ RDEPUBHTMLSearchEngine │
@@ -75,15 +82,10 @@ RDReaderView 是一个 iOS 阅读器组件库(CocoaPods),提供开箱即
│ RDEPUBTextRendererSupport / RDEPUBTextPaginationSupport │
│ RDEPUBTextBookBuilder / RDPlainTextBookBuilder │
│ RDEPUBTextLayouter / RDEPUBTextLayoutFrame │
│ RDEPUBTextBookCache / RDEPUBChapterData │
│ RDEPUBTextIndexTable / RDEPUBTextPerformanceSampler │
│ RDEPUBTextSearchEngine │
└──────────────────────────────────────────────────────────┘
┌──────────────────────────────────────────────────────────┐
│ LegacyRDReaderController/(旧版阅读器,保留兼容) │
│ RDReaderController(旧版)/ RDReaderManager │
│ RDReaderContentView / RDReaderEPUBContentView │
│ SSChapterListController / SSEventTrigger │
└──────────────────────────────────────────────────────────┘
```
---
@@ -239,6 +241,7 @@ session.clearPendingNavigation() // 取消待执行跳转
| `+Reflowable` | 注入分页 CSS、滚动到指定 progression、接收 JS 事件 |
| `+FixedLayout` | fixed-layout HTML wrapper 生成和加载 |
| `+JavaScriptBridge` | JS ↔ Swift 消息路由、选区、高亮、进度上报 |
| `+Search` | 搜索高亮装饰 |
#### ss-reader:// 协议
@@ -323,7 +326,10 @@ present(controller, animated: true)
| `showsTableOfContents` | `true` | 是否显示目录入口 |
| `allowsHighlights` | `true` | 是否显示高亮入口 |
| `showsSettingsPanel` | `true` | 是否显示设置入口 |
| `reflowableContentInsets` | (40,16,40,16) | 可重排内容内边距 |
| `fixedContentInset` | .zero | 固定版式内容内边距 |
| `theme` | `.light` | 主题 |
| `fixedLayoutFit` | `.page` | 固定版式适配模式 |
| `fixedLayoutSpreadMode` | `.automatic` | fixed-layout spread 模式 |
| `textRenderingEngine` | `.dtCoreText` | 文本 EPUB 渲染引擎 |
@@ -377,6 +383,7 @@ struct RDEPUBLocation: Codable, Equatable {
var progression: Double // [0, 1]
var lastProgression: Double? // [0, 1]
var fragment: String? //
var rangeAnchor: RDEPUBTextRangeAnchor? // EPUB
}
```
@@ -393,8 +400,8 @@ struct RDEPUBLocation: Codable, Equatable {
| 问题 | 说明 |
|------|------|
| Demo 层 RDReaderController 过大 | 约 1900+ 行,仍混有 EPUB 加载、UI 管理、数据源逻辑,待进一步拆分 |
| RDEPUBParser.swift 仍偏大 | 约 900 行,虽已拆出多个扩展文件,OPF metadata 细节仍集中 |
| RDEPUBReaderController 过大 | 约 1995 行,仍混有 EPUB 加载、UI 管理、数据源逻辑,待进一步拆分 |
| 部分 UI 文件仍然偏大 | RDEPUBTextContentView ~728 行、RDEPUBTextBookBuilder ~717 行,需继续拆分 |
| 横竖屏切换已接入一阶段支持 | `RDEPUBReaderController.viewWillTransition()` 统一接管正文重分页,`RDReaderView` 保留容器级双页布局刷新;仍需补齐固定回归矩阵 |
| 固定手势分区比例 | 三等分固定写死,不支持自定义 |
| 自动化测试为首批接入状态 | 已有 `ReadViewSDKDemoTests` / `ReadViewSDKDemoUITests` 与 parser / resolver / persistence / smoke 用例,分页、恢复链路和更多 UI 闭环仍需继续补齐 |
@@ -416,7 +423,7 @@ pod install
| 依赖 | 用途 | 使用层 |
|------|------|--------|
| ZIPFoundation | EPUB ZIP 解压 | RDEPUBParser+Archive |
| ZIPFoundation (~> 0.9) | EPUB ZIP 解压 | RDEPUBParser+Archive |
| DTCoreText | HTML → NSAttributedString | RDEPUBDTCoreTextRenderer |
| SnapKit | Demo 布局 | Demo 层 |
| SSAlertSwift | Demo 弹窗 | Demo 层 |