EpubReaderLight 是一个 Swift 软件包,它允许您呈现 EPUB 书籍的内容。除了书籍阅读器本身之外,不会显示任何额外的 UI 元素。它的实现方式旨在为您提供原生的用户体验。

安装

这是一个 Swift 软件包,因此您需要执行以下操作

用法

import EpubReaderLight 添加到您的 swift 文件中。

创建 ReaderViewController 的一个实例

let readerController = ReaderViewController(theme: .dark, eventsHandler: self)

将作为委托注入的类应符合 ReaderEventsHandler 协议。

要加载书籍,您需要提供本地 URL

try? await readerController.loadBook(url: url)

您还可以注入默认配置

try? await readerController.loadBook(
    url: url,
    bookSavedData: BookSavedData(
        theme: .light,
        fontSize: 24,
        font: "Avenir Next",
        page: 10
    )
)

这是一个简单的 ViewModel 的示例,它从项目中加载书籍

import SwiftUI
import EpubReaderLight

@Observable
class ContentViewModel {

    @ObservationIgnored
    lazy var readerController = ReaderViewController(theme: .dark, eventsHandler: self)

    func loadBook() {
        Task { @MainActor in
            guard let url = Bundle.main.url(forResource: "my_book", withExtension: "epub") else {
                print("⚠️ Error: unsupported book URL")
                return
            }
            Task {
                try? await readerController.loadBook(url: url)
            }
        }
    }
}

extension ContentViewModel: ReaderEventsHandler {
    
    func onSelect(word: String) {}
    
    func onBookLoaded() {}
    
    func onUpdated(savedData: EpubReaderLight.BookSavedData) {}
}

这是在 UI 中显示书籍的方式

import SwiftUI
import EpubReaderLight

struct ContentView: View {

    @State private var viewModel = ContentViewModel()

    var body: some View {
        VStack {
            ReaderView(controller: viewModel.readerController)
                .ignoresSafeArea()
        }
        .onAppear {
            viewModel.loadBook()
        }
    }
}