feat: EPUB阅读器搜索、注释、CFI模块及大书远距跳转优化
- 实现EPUB阅读器搜索功能及选中注释功能 - 优化CFI模块,修复代码审查发现的11个问题 - 实现大书远距目录跳转与后台补全优化方案 - 优化设置面板与章节运行时联动 - 重构及大量改进优化
This commit is contained in:
@@ -1,47 +1,43 @@
|
||||
import UIKit
|
||||
|
||||
// MARK: - 覆盖层装饰类型
|
||||
|
||||
/// 覆盖层装饰的数据结构
|
||||
/// 表示一个需要绘制在文本上方或下方的视觉装饰(高亮、搜索结果、选区等)
|
||||
struct RDEPUBTextOverlayDecoration {
|
||||
/// 装饰类型枚举
|
||||
|
||||
enum Kind: String {
|
||||
/// 文本选区(蓝色半透明)
|
||||
|
||||
case selection
|
||||
/// 用户高亮标注
|
||||
|
||||
case highlight
|
||||
/// 用户划线标注
|
||||
|
||||
case underline
|
||||
/// 搜索匹配项(普通)
|
||||
|
||||
case search
|
||||
/// 搜索匹配项(当前高亮)
|
||||
|
||||
case activeSearch
|
||||
/// 定位指示(跳转到位置时的动画目标)
|
||||
|
||||
case locate
|
||||
}
|
||||
|
||||
/// 装饰类型
|
||||
var kind: Kind
|
||||
/// 装饰对应的绝对文本范围
|
||||
|
||||
var absoluteRange: NSRange
|
||||
/// 装饰的绘制矩形数组(每行一个矩形)
|
||||
|
||||
var rects: [CGRect]
|
||||
/// 装饰的颜色
|
||||
|
||||
var color: UIColor
|
||||
}
|
||||
|
||||
// MARK: - 选择覆盖层视图
|
||||
|
||||
/// 文本选择和装饰的覆盖层绘制视图
|
||||
/// 位于文本内容上方,负责绘制选区、高亮、搜索结果等视觉效果
|
||||
/// 使用 Core Graphics 直接绘制,支持填充矩形和下划线两种绘制模式
|
||||
class RDEPUBSelectionOverlayView: UIView {
|
||||
|
||||
private(set) var page: RDEPUBTextPage?
|
||||
|
||||
private var snapshot: RDEPUBPageLayoutSnapshot?
|
||||
|
||||
private(set) var selectionRange: NSRange?
|
||||
|
||||
private var selectionRects: [CGRect] = []
|
||||
|
||||
private var decorations: [RDEPUBTextOverlayDecoration] = []
|
||||
|
||||
private let selectionVerticalAdjustment: CGFloat = -1
|
||||
|
||||
var selectionColor: UIColor = UIColor(red: 70 / 255, green: 140 / 255, blue: 1, alpha: 0.24) {
|
||||
|
||||
Reference in New Issue
Block a user