feat: EPUB阅读器搜索、注释、CFI模块及大书远距跳转优化

- 实现EPUB阅读器搜索功能及选中注释功能
- 优化CFI模块,修复代码审查发现的11个问题
- 实现大书远距目录跳转与后台补全优化方案
- 优化设置面板与章节运行时联动
- 重构及大量改进优化
This commit is contained in:
shenlei
2026-06-22 20:26:34 +08:00
parent f50495ad91
commit c65c190b71
178 changed files with 11380 additions and 6728 deletions
@@ -1,91 +1,69 @@
//
// RDReaderViewProtocols.swift
// ReadViewSDK
//
//
//
import UIKit
///
/// RDReaderView
/// RDReaderView
@objc public protocol RDReaderDataSource: NSObjectProtocol {
///
func pageCountOfReaderView(readerView: RDReaderView) -> Int
///
func pageContentView(readerView: RDReaderView, pageNum: Int, containerView: UIView?) -> UIView
/// UICollectionViewCell
func pageIdentifier(readerView: RDReaderView, pageNum: Int) -> String?
/// /
@objc optional func topToolView(readerView: RDReaderView) -> UIView?
/// /
@objc optional func bottomToolView(readerView: RDReaderView) -> UIView?
}
///
/// EPUB ``RDReaderDataSource``便 PDF
@objc public protocol RDReaderPageProvider: NSObjectProtocol {
///
func numberOfPages(in readerView: RDReaderView) -> Int
/// reusableView
func readerView(_ readerView: RDReaderView, viewForPageAt index: Int, reusableView: UIView?) -> UIView
/// UICollectionViewCell
@objc optional func pageIdentifier(in readerView: RDReaderView, index: Int) -> String?
///
@objc optional func readerViewTopChrome(_ readerView: RDReaderView) -> UIView?
///
@objc optional func readerViewBottomChrome(_ readerView: RDReaderView) -> UIView?
}
///
///
@objc public protocol RDReaderDelegate: NSObjectProtocol {
///
func pageNum(readerView: RDReaderView, pageNum: Int)
///
@objc optional func readerViewOrientationWillChange(readerView: RDReaderView, isLandscape: Bool)
}
///
///
public protocol RDReaderPageNavigating: AnyObject {
///
var currentPage: Int { get }
///
func reloadPages()
///
func transition(to page: Int, animated: Bool)
}
// MARK: -
extension RDReaderView {
/// RDReaderView 使
public enum DisplayType {
/// 仿使 UIPageViewController
case pageCurl
/// 使 UICollectionView +
case horizontalScroll
/// 使 UICollectionView
case verticalScroll
}
///
public enum PageDirection {
/// /
case leftToRight
///
case rightToLeft
}
}
// MARK: - Legacy
///
/// ``RDReaderDataSource`` ``RDReaderPageProvider``
final class RDReaderLegacyDataSourceAdapter: NSObject, RDReaderPageProvider {
///
weak var dataSource: RDReaderDataSource?
func numberOfPages(in readerView: RDReaderView) -> Int {