import UIKit @available(*, deprecated, message: "Use RDEpubReaderPageProvider instead.") @objc public protocol RDEpubReaderDataSource: NSObjectProtocol { func pageCountOfReaderView(readerView: RDEpubReaderView) -> Int func pageContentView(readerView: RDEpubReaderView, pageNum: Int, containerView: UIView?) -> UIView func pageIdentifier(readerView: RDEpubReaderView, pageNum: Int) -> String? @objc optional func topToolView(readerView: RDEpubReaderView) -> UIView? @objc optional func bottomToolView(readerView: RDEpubReaderView) -> UIView? } @objc public protocol RDEpubReaderPageProvider: NSObjectProtocol { func numberOfPages(in readerView: RDEpubReaderView) -> Int func readerView(_ readerView: RDEpubReaderView, viewForPageAt index: Int, reusableView: UIView?) -> UIView @objc optional func pageIdentifier(in readerView: RDEpubReaderView, index: Int) -> String? /// 指定页面是否允许进入阅读器预加载。默认允许。 /// 包含不可复制宿主 View 的页面应返回 false,避免预加载抢占可见页面内容。 @objc optional func readerView(_ readerView: RDEpubReaderView, shouldPreloadPageAt index: Int) -> Bool @objc optional func readerViewTopChrome(_ readerView: RDEpubReaderView) -> UIView? @objc optional func readerViewBottomChrome(_ readerView: RDEpubReaderView) -> UIView? } @objc public protocol RDEpubReaderDelegate: NSObjectProtocol { func pageNum(readerView: RDEpubReaderView, pageNum: Int) @objc optional func readerViewOrientationWillChange(readerView: RDEpubReaderView, isLandscape: Bool) } public protocol RDEpubReaderPageNavigating: AnyObject { var currentPage: Int { get } func reloadPages() func transition(to page: Int, animated: Bool) } extension RDEpubReaderView { public enum DisplayType { case pageCurl case horizontalScroll case verticalScroll } public enum PageDirection { case leftToRight case rightToLeft } } final class RDEpubReaderLegacyDataSourceAdapter: NSObject, RDEpubReaderPageProvider { weak var dataSource: RDEpubReaderDataSource? func numberOfPages(in readerView: RDEpubReaderView) -> Int { dataSource?.pageCountOfReaderView(readerView: readerView) ?? 0 } func readerView(_ readerView: RDEpubReaderView, viewForPageAt index: Int, reusableView: UIView?) -> UIView { dataSource?.pageContentView(readerView: readerView, pageNum: index, containerView: reusableView) ?? UIView() } func pageIdentifier(in readerView: RDEpubReaderView, index: Int) -> String? { dataSource?.pageIdentifier(readerView: readerView, pageNum: index) } func readerViewTopChrome(_ readerView: RDEpubReaderView) -> UIView? { dataSource?.topToolView?(readerView: readerView) } func readerViewBottomChrome(_ readerView: RDEpubReaderView) -> UIView? { dataSource?.bottomToolView?(readerView: readerView) } }