- 实现EPUB阅读器搜索功能及选中注释功能 - 优化CFI模块,修复代码审查发现的11个问题 - 实现大书远距目录跳转与后台补全优化方案 - 优化设置面板与章节运行时联动 - 重构及大量改进优化
51 lines
1.5 KiB
Swift
51 lines
1.5 KiB
Swift
|
|
import UIKit
|
|
|
|
public struct RDEPUBNavigatorLayoutContext: Equatable {
|
|
|
|
public var containerSize: CGSize
|
|
|
|
public var pagesPerScreen: Int
|
|
|
|
public var safeAreaInsets: UIEdgeInsets
|
|
|
|
public var userInterfaceIdiom: UIUserInterfaceIdiom
|
|
|
|
public var reflowableContentInsets: UIEdgeInsets
|
|
|
|
public init(
|
|
containerSize: CGSize,
|
|
pagesPerScreen: Int = 1,
|
|
safeAreaInsets: UIEdgeInsets = .zero,
|
|
userInterfaceIdiom: UIUserInterfaceIdiom = .phone,
|
|
reflowableContentInsets: UIEdgeInsets = UIEdgeInsets(top: 40, left: 16, bottom: 40, right: 16)
|
|
) {
|
|
self.containerSize = containerSize
|
|
self.pagesPerScreen = max(1, pagesPerScreen)
|
|
self.safeAreaInsets = safeAreaInsets
|
|
self.userInterfaceIdiom = userInterfaceIdiom
|
|
self.reflowableContentInsets = reflowableContentInsets
|
|
}
|
|
|
|
public var viewportSize: CGSize {
|
|
let width: CGFloat
|
|
if pagesPerScreen > 1 {
|
|
width = containerSize.width / CGFloat(pagesPerScreen)
|
|
} else {
|
|
width = containerSize.width
|
|
}
|
|
return CGSize(width: width, height: containerSize.height)
|
|
}
|
|
|
|
public var fixedContentInset: UIEdgeInsets {
|
|
var insets = safeAreaInsets
|
|
if userInterfaceIdiom != .phone {
|
|
insets = .zero
|
|
}
|
|
|
|
let horizontalInsets = max(insets.left, insets.right)
|
|
insets.left = horizontalInsets
|
|
insets.right = horizontalInsets
|
|
return insets
|
|
}
|
|
} |