置顶
菜鸟入门,各位大佬轻喷,如有谬误之处欢迎讨论建议,也欢迎各位道友与我同行
“不积跬步,无以至千里;不积小流,无以成江海”
继续
上文中我们实现了普通数据的本地持久化保存,包括存储与取消存储。
本文继续,开发总免不了引入第三方库,省事省力省心,所以本文我们来讨论第三方库的引入,以 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
中常用的方式。
欢迎关注微信公众号【思跃喵】,一起探讨。