如何使用 SwiftUI 构建 iOS PDF 查看器
SwiftUI是 Apple 最新的用户界面框架,旨在彻底改变开发者为 iOS、macOS、watchOS 和 tvOS 创建 UI 的方式。SwiftUI 在 WWDC 2019 上推出,它提供了一种现代的声明式语法,让开发者能够以更少的代码和更直观的开发流程构建复杂的 UI。
它广泛用于 Apple 应用程序,包括 PDF 应用程序。在本文中,您将看到 Swift 教程示例,并学习如何使用 ComPDFKit iOS PDF 库构建 SwiftUI PDF 查看器。
步骤 1:Swift UI PDF 库集成的要求
通过 SwiftUI 集成 ComPDFKit iOS PDF 库需要满足以下要求。
- iOS 10.0 或更高版本。
- 适用于 Swift 的 Xcode 13.0 或更新版本。
- ComPDFKit iOS PDF 库:访问 GitHub 上的 ComPDFKit iOS PDF 库以获取您的 SwiftUI PDF 程序。
- ComPDFKit iOS PDF 库许可证:在 ComPDFKit 网站上申请即可获得 30 天试用许可证。它将通过电子邮件发送。
注意:ComPDFKit 要求使用发布时可用的最新稳定版 Xcode。这是一项硬性要求,因为每个版本的 Xcode 都与特定版本的 iOS Base SDK 捆绑在一起,后者通常定义 UIKit 和其他各种框架的行为方式。
步骤 2:为你的 SwiftUI PDF Viewer 获取 iOS 库包
要使用 Swift 学习 SwiftUI 教程示例,必须下载 Swift 版 ComPDFKit iOS PDF 库。此库可让您将 PDF 查看功能无缝集成到您的 SwiftUI 应用程序中。
访问GitHub上适用于您的 SwiftUI 项目的 iOS PDF
步骤 3:获取 ComPDFKit PDF 库的试用许可证
只需在 ComPDFKit 网站上单击几下即可轻松获得ComPDFKit iOS 库 30 天许可证。无需销售。只需申请适当的许可证,您就会自动收到包含许可证的电子邮件。将 Swift PDF 库无缝集成到您的项目中。
步骤 4:为您的 Swift UI PDF APP 应用许可证密钥
1. 查找许可证密钥
以下是分步教程,可帮助您找到正确的许可证密钥,以将 PDF 查看器库集成到您的 SwiftUI 项目中。
在您收到的电子邮件中,找到包含许可证密钥的XML文件。
打开XML文件,通过online字段判断许可证类型,如果存在则为在线许可证,如果不存在或者存在offline则为离线许可证。
在线许可:
xmlCopy code
<?xml version="1.0" encoding="UTF-8" standalone="no"?>
<license version="1">
<platform>ios</platform>
<starttime>xxxxxxxx</starttime>
<endtime>xxxxxxxx</endtime>
<type>online</type>
<key>LICENSE_KEY</key>
</license>
离线许可证:
xmlCopy code
<?xml version="1.0" encoding="UTF-8" standalone="no"?>
<license version="1">
<platform>ios</platform>
<starttime>xxxxxxxx</starttime>
<endtime>xxxxxxxx</endtime>
<key>LICENSE_KEY</key>
</license>
Copy the LICENSE_KEY from the <key>LICENSE_KEY</key> field.
2. 应用许可证密钥
前往 ComPDFKit 官方网站的在线销售页面提交试用申请,即可获得 iOS 平台的即时免费试用许可证,有效期为 30 天。在使用任何 ComPDFKit PDF SDK 类之前,您必须执行以下步骤将许可证应用于您的应用程序:
- 在AppDelegate.swift中,导入头文件 ComPDFKit。
- 根据上一步获得的身份验证类型(无论是在线还是离线),根据您的要求使用相应的方法初始化许可证。
- 初始化许可证:
在线许可:
按照以下代码,在func application(_ application: UIApplication, didFinishLaunchingWithOptions launchOptions: [UIApplication.LaunchOptionsKey: Any]?) -> Bool中调用方法CPDFKit.verify(withOnlineLicense: "LICENSE_KEY") { code, message in }。您需要将LICENSE_KEY替换为您获得的许可证。
func application(_ application: UIApplication, didFinishLaunchingWithOptions launchOptions: [UIApplication.LaunchOptionsKey: Any]?) -> Bool {
// Set your online license key here. ComPDFKit is commercial software.
// Each ComPDFKit license is bound to a specific app bundle id.
// com.compdfkit.pdfviewe
CPDFKit.verify(withOnlineLicense: "YOUR_LICENSE_KEY_GOES_HERE") { code, message in
}
}
离线许可证:
按照以下代码,在func application(_ application: UIApplication, didFinishLaunchingWithOptions launchOptions: [UIApplication.LaunchOptionsKey: Any]?) -> Bool中调用方法CPDFKit.verifyWithKey:"LICENSE_SECRET"。您需要将LICENSE_KEY替换为您获得的许可证。
func application(_ application: UIApplication, didFinishLaunchingWithOptions launchOptions: [UIApplication.LaunchOptionsKey: Any]?) -> Bool {
// Set your license key here. ComPDFKit is commercial software.
// Each ComPDFKit license is bound to a specific app bundle id.
// com.compdfkit.pdfviewer
CPDFKit.verify(withKey: "YOUR_LICENSE_KEY_GOES_HERE")
return true
}
第 5 步:集成 ComPDFKit iOS PDF 库 — SwiftUI 教程
让我们讨论如何在 SwiftUI 框架中集成ComPDFKit for iOS并构建一个 iOS PDF 查看器来显示 PDF。
- 将CPDFViewController桥接到 SwiftUI
首先,声明符合UIViewControllerRepresentable协议的CPDFSwiftViewController结构,以便您可以从 UIKit 桥接到 SwiftUI。之后,添加CPDFConfiguration类型的属性并实现协议,如下所示:
import ComPDFKit
struct CPDFSwiftViewController: UIViewControllerRepresentable {
@Environment(\.presentationMode) var presentationMode: Binding<PresentationMode>
class Coordinator: NSObject,CPDFViewBaseControllerDelete {
var myview: CPDFSwiftViewController
init(_ myview: CPDFSwiftViewController) {
self.myview = myview
}
// MARK: - CPDFViewBaseControllerDelete
func PDFViewBaseControllerDissmiss(_ baseControllerDelete: CPDFViewBaseController) {
baseControllerDelete.dismiss(animated: true)
}
}
func makeCoordinator() -> Coordinator {
Coordinator(self)
}
func makeUIViewController(context: Context) -> CNavigationController {
CPDFKit.verify(withKey: "LICENSE_KEY")
let filePath = Bundle.main.path(forResource: "developer_guide_ios", ofType: "pdf") ?? ""
let configuration = CPDFConfiguration()
let vc = CPDFViewController(filePath: filePath, password: nil, configuration: configuration)
vc.delegate = context.coordinator;
let navController = CNavigationController(rootViewController: vc)
navController.modalPresentationStyle = .fullScreen
return navController
}
func updateUIViewController(_ uiViewController: CNavigationController, context: UIViewControllerRepresentableContext<CPDFSwiftViewController>) {
}
}
2. 在 SwiftUI 中使用ComPDFKitView
在你的 SwiftUI 内容视图中使用CPDFViewController:
struct ContentView: View {
@State var isPresented: Bool = false
var body: some View {
VStack {
Image(systemName: "globe")
.imageScale(.large)
.foregroundColor(.accentColor)
Text("Hello, world!")
.toolbar {
ToolbarItem(placement: .bottomBar) {
Button("Click to open the sample PDF") {
isPresented = true
}
}
}
.fullScreenCover(isPresented: $isPresented) {
CPDFSwiftViewController()
}
}
.padding()
}
}
本指南以 iPad 14 设备为例,成功编译 demo 后会打开并显示“developer_guide_ios.pdf”文件。
关于 SwiftUI 和 ComPDFKit 的常见问题解答
- 如何获取 SwiftUI 更新?
SwiftUI 中的新功能 - WWDC24:SwiftUI 引入了许多新 API,使使用该框架更加方便。这包括对核心组件的增强、使用基础 API 的新方法以及易用性的改进。您现在可以创建自定义容器视图。
2. 什么是 UIKit 和 SwiftUI?
SwiftUI 和 UIKit 是用于在 iOS 开发中设计用户界面的框架。SwiftUI 提供了一种现代、简化的 UI 开发方法,而 UIKit 则提供了稳健性和多功能性。
3. Swift 和 SwiftUI 有什么区别?
Swift 是 Apple Inc. 创建的一种编程语言。它是一种功能强大且快速的语言,可使 Apple 产品的开发更加愉快和高效。SwiftUI
是一个用于在 Apple 平台上构建用户界面的声明性框架。
4. 为什么 SwiftUI 更好?
SwiftUI 的优势在于更快的 UI 开发、控制声明式语法、Swift 集成和跨平台兼容性。该框架提供了一组丰富的过渡和动画,增强了用户体验。
5. SwiftUI 有什么缺点?
部署受限:SwiftUI 仅支持 iOS 13+、macOS 10.15+、watchOS 6+ 和 tvOS 13+。
成熟阶段:作为较新的框架,SwiftUI 仍在不断发展和成熟。
6. 为什么选择适用于 iOS 的 ComPDFKit PDF SDK?
ComPDFKit PDF SDK for iOS 旨在使 PDF 处理变得无缝且高效。它提供用于查看、注释、编辑和转换 PDF 文件的强大功能。它的高性能和灵活性使其成为希望将PDF 功能集成到 iOS 应用程序中的开发人员的绝佳选择。
7. 在哪里可以找到所有 ComPDFKit iOS PDF 库开发人员指南?
所有开发人员指南均可在文档页面上找到。
8. 我可以在哪里下载 ComPDFKit PDF 库?
9. 我可以在哪里获得 ComPDFKit for iOS 的试用许可证?
可以在定价页面上直接获得许可证(无需销售)。
10. 我可以免费试用 iOS 版 ComPDFKit 多长时间?
您可以在 30 天内集成适用于 iOS 的 ComPDFKit。如果您需要更多天数的免费试用,可以联系销售团队。