ReadViewSDK/Sources/RDReaderView/EPUBCore/RDEPUBNavigatorLayoutContext.swift
shenlei c65c190b71 feat: EPUB阅读器搜索、注释、CFI模块及大书远距跳转优化
- 实现EPUB阅读器搜索功能及选中注释功能
- 优化CFI模块,修复代码审查发现的11个问题
- 实现大书远距目录跳转与后台补全优化方案
- 优化设置面板与章节运行时联动
- 重构及大量改进优化
2026-06-22 20:26:34 +08:00

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
}
}