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