94 lines
2.9 KiB
Swift
94 lines
2.9 KiB
Swift
|
||
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)
|
||
}
|
||
}
|