- Rename source module from RDReaderView to RDEpubReaderView - Move all source files from Sources/RDReaderView/ to Sources/RDEpubReaderView/ - Update podspec: RDReaderView.podspec -> RDEpubReaderView.podspec - Update Podfile, demo project, and CocoaPods config for new pod name - Delete old RDReaderView pod support files from ReadViewDemo/Pods - Add new RDEpubReaderView pod support files - Update documentation (API ref, architecture, UML, conventions, etc.) - Add FixedLayoutRotationTests - Update .gitignore: exclude .DS_Store, manual unpack backups, _ssoft-output
46 lines
1.4 KiB
Swift
46 lines
1.4 KiB
Swift
import UIKit
|
|
|
|
struct RDEpubReaderPagingController {
|
|
|
|
struct PageTransitionRequest: Equatable {
|
|
let pageNum: Int
|
|
let animated: Bool
|
|
}
|
|
|
|
var pendingTransitionRequest: PageTransitionRequest?
|
|
|
|
var isTransitioning: Bool = false
|
|
|
|
var didBuildUI = false
|
|
|
|
static func createPageViewController(isDualPage: Bool) -> UIPageViewController {
|
|
let options: [UIPageViewController.OptionsKey: Any]?
|
|
if isDualPage {
|
|
options = [.spineLocation: NSNumber(value: UIPageViewController.SpineLocation.mid.rawValue)]
|
|
} else {
|
|
options = nil
|
|
}
|
|
let pageVC = UIPageViewController(transitionStyle: .pageCurl, navigationOrientation: .horizontal, options: options)
|
|
pageVC.isDoubleSided = isDualPage
|
|
return pageVC
|
|
}
|
|
|
|
mutating func shouldQueuePageTransition(_ request: PageTransitionRequest, currentDisplayType: RDEpubReaderView.DisplayType) -> Bool {
|
|
guard currentDisplayType == .pageCurl, isTransitioning else { return false }
|
|
pendingTransitionRequest = request
|
|
return true
|
|
}
|
|
|
|
mutating func finishPageCurlTransition() -> PageTransitionRequest? {
|
|
isTransitioning = false
|
|
guard let pending = pendingTransitionRequest else { return nil }
|
|
pendingTransitionRequest = nil
|
|
return pending
|
|
}
|
|
|
|
mutating func resetPendingState() {
|
|
isTransitioning = false
|
|
pendingTransitionRequest = nil
|
|
}
|
|
}
|