安全区域改为从 key window 动态获取
- 新增 RDEPUBSafeArea:参考 GKNavigationBarSwift 的 keyWindow 三级查找与临时 window 兜底 - 移除 reflowableContentInsets 中 top/bottom 40 的固定默认值,改按设备真实安全区生成 - 各取安全区处的 ?? .zero 兜底改为回退到 key window 值 - DEBUG 构建下为文本可读区域绘制红色边框,方便查看排版范围 Co-Authored-By: Claude Fable 5 <noreply@anthropic.com>
This commit is contained in:
co-authored by
Claude Fable 5
parent
ca408c20ab
commit
d0efe3f2cc
@@ -126,6 +126,19 @@ final class RDEPUBTextContentView: UIView, UIGestureRecognizerDelegate, RDReader
|
||||
return spinner
|
||||
}()
|
||||
|
||||
#if DEBUG
|
||||
/// Debug-only outline of the readable content area (bounds inset by contentInsets).
|
||||
private let debugContentAreaBorderView: UIView = {
|
||||
let view = UIView()
|
||||
view.isUserInteractionEnabled = false
|
||||
view.backgroundColor = .clear
|
||||
view.layer.borderColor = UIColor.systemRed.withAlphaComponent(0.6).cgColor
|
||||
view.layer.borderWidth = 1
|
||||
view.accessibilityIdentifier = "epub.reader.debug.contentAreaBorder"
|
||||
return view
|
||||
}()
|
||||
#endif
|
||||
|
||||
private lazy var longPressGestureRecognizer: UILongPressGestureRecognizer = {
|
||||
let gesture = UILongPressGestureRecognizer(target: self, action: #selector(handleLongPress(_:)))
|
||||
gesture.minimumPressDuration = 0.5
|
||||
@@ -243,6 +256,9 @@ final class RDEPUBTextContentView: UIView, UIGestureRecognizerDelegate, RDReader
|
||||
addSubview(pageNumberLabel)
|
||||
addSubview(loadingSpinner)
|
||||
addSubview(selectionLoupeView)
|
||||
#if DEBUG
|
||||
addSubview(debugContentAreaBorderView)
|
||||
#endif
|
||||
addGestureRecognizer(longPressGestureRecognizer)
|
||||
addGestureRecognizer(panGestureRecognizer)
|
||||
addGestureRecognizer(tapGestureRecognizer)
|
||||
@@ -338,6 +354,9 @@ final class RDEPUBTextContentView: UIView, UIGestureRecognizerDelegate, RDReader
|
||||
coverImageView.frame = bounds.inset(by: contentInsets)
|
||||
|
||||
let contentRect = bounds.inset(by: contentInsets)
|
||||
#if DEBUG
|
||||
debugContentAreaBorderView.frame = contentRect
|
||||
#endif
|
||||
let labelSize = pageNumberLabel.sizeThatFits(
|
||||
CGSize(width: contentRect.width, height: Self.pageNumberReservedHeight)
|
||||
)
|
||||
@@ -374,7 +393,7 @@ final class RDEPUBTextContentView: UIView, UIGestureRecognizerDelegate, RDReader
|
||||
selectionController.clearSelection(renderView: coreTextRenderView)
|
||||
contentInsets = Self.safeContentInsets(
|
||||
configuration: configuration,
|
||||
safeAreaInsets: safeAreaInsets
|
||||
safeAreaInsets: RDEPUBSafeArea.resolve(safeAreaInsets)
|
||||
)
|
||||
backgroundColor = configuration.theme.contentBackgroundColor
|
||||
pageNumberLabel.textColor = configuration.theme.contentTextColor
|
||||
@@ -459,7 +478,7 @@ final class RDEPUBTextContentView: UIView, UIGestureRecognizerDelegate, RDReader
|
||||
selectionController.clearSelection(renderView: coreTextRenderView)
|
||||
contentInsets = Self.safeContentInsets(
|
||||
configuration: configuration,
|
||||
safeAreaInsets: safeAreaInsets
|
||||
safeAreaInsets: RDEPUBSafeArea.resolve(safeAreaInsets)
|
||||
)
|
||||
backgroundColor = configuration.theme.contentBackgroundColor
|
||||
pageNumberLabel.textColor = configuration.theme.contentTextColor
|
||||
|
||||
Reference in New Issue
Block a user