- 新增 RDEPUBResourceDataProvider 解密钩子协议 + 访问登记表,收敛章节 HTML/ 图片/内联 CSS/脚注/封面/图片查看器/正文取图等读取点,scheme handler 对加密书 禁用流式分支;新增 RDEPUBDecryptingImageAttachment 解密 DTCoreText 图片附件; RDEPUBReaderDependencies.live(resourceDataProvider:) 便捷注入。明文书零影响。 - 试读墙:configuration.trialPolicy + delegate epubReaderTrialWallView/ DidReachTrialWall,UI 由宿主提供(RDEPUBReaderController+Trial)。 - 工具栏定制:RDEPUBReaderTop/BottomToolViewProtocol 协议 + dependencies 工厂注入, 内置栏已 conform,configureTopToolView 改协议类型。 - 朝向锁定:RDEPUBMetadata.orientation(OPF rendition:orientation 主, iBooks display-options 兜底)+ RDEPUBReaderController+Orientation 重写支持朝向、 打开后主动转向。 注:RDEPUBReaderController+LocationResolution / PaginationCoordinator 为本次改动前 即存在的工作区修改,一并纳入。 Co-Authored-By: Claude Fable 5 <noreply@anthropic.com>
70 lines
2.3 KiB
Swift
70 lines
2.3 KiB
Swift
import UIKit
|
||
|
||
/// 顶部工具栏协议:宿主可提供自定义顶栏,只需实现以下回调与状态方法。
|
||
/// 内置 `RDEPUBReaderTopToolView` 已实现本协议。
|
||
/// 通过 `RDEPUBReaderDependencies.makeTopToolView` 工厂注入自定义实现。
|
||
public protocol RDEPUBReaderTopToolViewProtocol: AnyObject {
|
||
|
||
/// 返回 / 关闭
|
||
var onBack: (() -> Void)? { get set }
|
||
|
||
/// 搜索
|
||
var onSearch: (() -> Void)? { get set }
|
||
|
||
/// 切换书签
|
||
var onToggleBookmark: (() -> Void)? { get set }
|
||
|
||
/// 应用主题
|
||
func apply(theme: RDEPUBReaderTheme)
|
||
|
||
/// 设置标题
|
||
func setTitle(_ title: String?)
|
||
|
||
/// 书签按钮是否可用
|
||
func setBookmarkEnabled(_ isEnabled: Bool)
|
||
|
||
/// 书签按钮选中态(当前页是否已加书签)
|
||
func setBookmarkSelected(_ isSelected: Bool)
|
||
}
|
||
|
||
/// 底部工具栏协议:宿主可提供自定义底栏。内置 `RDEPUBReaderBottomToolView` 已实现本协议。
|
||
/// 通过 `RDEPUBReaderDependencies.makeBottomToolView` 工厂注入自定义实现。
|
||
public protocol RDEPUBReaderBottomToolViewProtocol: AnyObject {
|
||
|
||
/// 目录
|
||
var onShowTableOfContents: (() -> Void)? { get set }
|
||
|
||
/// 书签列表
|
||
var onShowBookmarks: (() -> Void)? { get set }
|
||
|
||
/// 高亮列表
|
||
var onShowHighlights: (() -> Void)? { get set }
|
||
|
||
/// 新增高亮 / 标注
|
||
var onAddHighlight: (() -> Void)? { get set }
|
||
|
||
/// 设置面板
|
||
var onShowSettings: (() -> Void)? { get set }
|
||
|
||
/// 应用主题
|
||
func apply(theme: RDEPUBReaderTheme)
|
||
|
||
/// 按配置更新各入口可见性
|
||
func updateVisibility(showsTableOfContents: Bool, allowsHighlights: Bool, showsSettingsPanel: Bool)
|
||
|
||
/// 书签列表按钮是否可用
|
||
func setBookmarksEnabled(_ isEnabled: Bool)
|
||
|
||
/// 新增高亮按钮是否可用(有选区时)
|
||
func setAddHighlightEnabled(_ isEnabled: Bool)
|
||
|
||
/// 高亮列表按钮是否可用
|
||
func setHighlightsEnabled(_ isEnabled: Bool)
|
||
}
|
||
|
||
/// 顶部工具栏具体类型:UIView 且实现顶栏协议
|
||
public typealias RDEPUBReaderTopToolViewProviding = UIView & RDEPUBReaderTopToolViewProtocol
|
||
|
||
/// 底部工具栏具体类型:UIView 且实现底栏协议
|
||
public typealias RDEPUBReaderBottomToolViewProviding = UIView & RDEPUBReaderBottomToolViewProtocol
|