置顶 菜鸟入门,各位大佬轻喷,如有谬误之处欢迎讨论建议,也欢迎各位道友与我同行 "不积跬步,无以至千里;不积小流,无以成江海" 继续 上文中我们实现了普通数据的本地持久化保存,包括存储与取消存储。 本文继续,开发总免不了引入第三方库,省事省力省心,所以本文我们来讨论第三方库的引入,以 ExytePopupView 库为例,实现 web 开发中常用的 toast 提醒。 准备工作 据了解, Swift 开发的第三方库引入有三种方式 一种是官方的包管理器 Apple Swift Packages Manager 一般会简称为 SPM 另一种是三方的包管理器 Cocoapods ,终端命令为 pod 。还有一种是 Carthage 。 我所了解到的最常用的还是 Cocoapods 。 所以我们直接从它开始。 cocoapods 安装 与 初始化 介绍和包搜索地址 https://cocoapods.org 一、打开终端 Terminal ,执行安装命令: sudo gem install cocoapods 二、在项目根目录新建 Podfile 文件,内容如下 // 版本13以上,因为ExytePopupView只支持13以上 platform :ios, "13.0" use_frameworks! // 注意修改项目名称 target "helloworld" do pod "ExytePopupView" end 三、在终端中,切换到项目根目录,执行命令: pod install• 如果出现报错类似如下 # ... RuntimeError - [Xcodeproj] Unknown object version. # ... 那么执行如下命令,更新 cocoapods 之后再安装依赖 sudo gem install cocoapods --pre 再次报错 You don"t have write permissions for the /System/Library/Frameworks/Ruby.framework/Versions/2.6/usr/lib/ruby/gems/2.6.0 directory 执行 brew reinstall cocoapods pod install 时间可能会比较长,耐心等待 执行完成后工作目录如下 使用 该 popup 库的仓库地址为 https://github.com/exyte/PopupView 该库也可以使用 Swift Package Manager 进行导入,后续再研究这种方式 根据官方的使用建议,我们将示例代码放到 IndexView.swift 中: import SwiftUI // import 我们导入的第三方包 import ExytePopupView struct IndexView: View{ // ... @State private var showToast:Bool = true; var body: some View{ // ... VStack{ // ... } //... .popup(isPresented: $showToast, type:.default, position: .bottom, autohideIn: 10.0, dragToDismiss: true){ Text("The popup") .frame(width: 200, height: 200) .background(.gray) .foregroundColor(.white) .cornerRadius(20.0) } } } 点击运行即可得到如下结果: 我们往中间的内容放入文字,或者一个 loading图片 即可实现 web 中常用的 Toast 提示 ,以及 Toast Loading 了 总结本文介绍了 cocoapods 的基本使用。用好三方包可以节省大量的时间,比如这个 popup 。这个 popup 应该还需要再封装进行使用,不然每个页面都这么写,还是很费劲的。Cocoapods 里面搜到的很多库都是基于 UIView 进行扩展的,并不能直接在SwiftUI 中使用,需要实现 UIViewControllerRepresentable 之后才行,后续再来讨论这个问题。建议还是尽量找能支持 SwiftUI 的库。下章我们来讨论 Popup 的封装,将它封装成 web 中常用的方式。 欢迎关注微信公众号【思跃喵】,一起探讨。