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>) {
}
}
- 在 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 的新方法以及易用性的改进。您现在可以创建自定义容器视图。
- 什么是 UIKit 和 SwiftUI?
SwiftUI 和 UIKit 是用于在 iOS 开发中设计用户界面的框架。SwiftUI 提供了一种现代、简化的 UI 开发方法,而 UIKit 则提供了稳健性和多功能性。
- Swift 和 SwiftUI 有什么区别?
Swift 是 Apple Inc. 创建的一种编程语言。它是一种功能强大且快速的语言,可使 Apple 产品的开发更加愉快和高效。SwiftUI
是一个用于在 Apple 平台上构建用户界面的声明性框架。
- 为什么 SwiftUI 更好?
SwiftUI 的优势在于更快的 UI 开发、控制声明式语法、Swift 集成和跨平台兼容性。该框架提供了一组丰富的过渡和动画,增强了用户体验。
- SwiftUI 有什么缺点?
部署受限:SwiftUI 仅支持 iOS 13+、macOS 10.15+、watchOS 6+ 和 tvOS 13+。
成熟阶段:作为较新的框架,SwiftUI 仍在不断发展和成熟。
- 为什么选择适用于 iOS 的 ComPDFKit PDF SDK?
ComPDFKit PDF SDK for iOS 旨在使 PDF 处理变得无缝且高效。它提供用于查看、注释、编辑和转换 PDF 文件的强大功能。它的高性能和灵活性使其成为希望将PDF 功能集成到 iOS 应用程序中的开发人员的绝佳选择。
- 在哪里可以找到所有 ComPDFKit iOS PDF 库开发人员指南?
所有开发人员指南均可在文档页面上找到。
- 我可以在哪里下载 ComPDFKit PDF 库?
- 我可以在哪里获得 ComPDFKit for iOS 的试用许可证?
可以在定价页面上直接获得许可证(无需销售)。
- 我可以免费试用 iOS 版 ComPDFKit 多长时间?
您可以在 30 天内集成适用于 iOS 的 ComPDFKit。如果您需要更多天数的免费试用,可以联系销售团队。