SwiftUI入门 - 14. 第三方库与Popup引入

置顶

菜鸟入门,各位大佬轻喷,如有谬误之处欢迎讨论建议,也欢迎各位道友与我同行

“不积跬步,无以至千里;不积小流,无以成江海”

继续

上文中我们实现了普通数据的本地持久化保存,包括存储与取消存储。

本文继续,开发总免不了引入第三方库,省事省力省心,所以本文我们来讨论第三方库的引入,以 ExytePopupView 库为例,实现 web 开发中常用的 toast 提醒。

准备工作

据了解,Swift开发的第三方库引入有三种方式

  • 一种是官方的包管理器 Apple Swift Packages Manager 一般会简称为 SPM
    1203-封面.png
  • 另一种是三方的包管理器 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

时间可能会比较长,耐心等待

执行完成后工作目录如下

1203-2.png

使用

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)
        }
    }
}

点击运行即可得到如下结果:

1203-3.png

我们往中间的内容放入文字,或者一个 loading图片即可实现 web 中常用的 Toast 提示 ,以及 Toast Loading

总结

  1. 本文介绍了 cocoapods 的基本使用。
  2. 用好三方包可以节省大量的时间,比如这个 popup
  3. 这个 popup 应该还需要再封装进行使用,不然每个页面都这么写,还是很费劲的。
  4. Cocoapods 里面搜到的很多库都是基于 UIView 进行扩展的,并不能直接在SwiftUI中使用,需要实现 UIViewControllerRepresentable 之后才行,后续再来讨论这个问题。
  5. 建议还是尽量找能支持 SwiftUI的库。
  6. 下章我们来讨论 Popup 的封装,将它封装成 web 中常用的方式。

欢迎关注微信公众号【思跃喵】,一起探讨。

最后编辑于
©著作权归作者所有,转载或内容合作请联系作者
  • 序言:七十年代末,一起剥皮案震惊了整个滨河市,随后出现的几起案子,更是在滨河造成了极大的恐慌,老刑警刘岩,带你破解...
    沈念sama阅读 212,222评论 6 493
  • 序言:滨河连续发生了三起死亡事件,死亡现场离奇诡异,居然都是意外死亡,警方通过查阅死者的电脑和手机,发现死者居然都...
    沈念sama阅读 90,455评论 3 385
  • 文/潘晓璐 我一进店门,熙熙楼的掌柜王于贵愁眉苦脸地迎上来,“玉大人,你说我怎么就摊上这事。” “怎么了?”我有些...
    开封第一讲书人阅读 157,720评论 0 348
  • 文/不坏的土叔 我叫张陵,是天一观的道长。 经常有香客问我,道长,这世上最难降的妖魔是什么? 我笑而不...
    开封第一讲书人阅读 56,568评论 1 284
  • 正文 为了忘掉前任,我火速办了婚礼,结果婚礼上,老公的妹妹穿的比我还像新娘。我一直安慰自己,他们只是感情好,可当我...
    茶点故事阅读 65,696评论 6 386
  • 文/花漫 我一把揭开白布。 她就那样静静地躺着,像睡着了一般。 火红的嫁衣衬着肌肤如雪。 梳的纹丝不乱的头发上,一...
    开封第一讲书人阅读 49,879评论 1 290
  • 那天,我揣着相机与录音,去河边找鬼。 笑死,一个胖子当着我的面吹牛,可吹牛的内容都是我干的。 我是一名探鬼主播,决...
    沈念sama阅读 39,028评论 3 409
  • 文/苍兰香墨 我猛地睁开眼,长吁一口气:“原来是场噩梦啊……” “哼!你这毒妇竟也来了?” 一声冷哼从身侧响起,我...
    开封第一讲书人阅读 37,773评论 0 268
  • 序言:老挝万荣一对情侣失踪,失踪者是张志新(化名)和其女友刘颖,没想到半个月后,有当地人在树林里发现了一具尸体,经...
    沈念sama阅读 44,220评论 1 303
  • 正文 独居荒郊野岭守林人离奇死亡,尸身上长有42处带血的脓包…… 初始之章·张勋 以下内容为张勋视角 年9月15日...
    茶点故事阅读 36,550评论 2 327
  • 正文 我和宋清朗相恋三年,在试婚纱的时候发现自己被绿了。 大学时的朋友给我发了我未婚夫和他白月光在一起吃饭的照片。...
    茶点故事阅读 38,697评论 1 341
  • 序言:一个原本活蹦乱跳的男人离奇死亡,死状恐怖,灵堂内的尸体忽然破棺而出,到底是诈尸还是另有隐情,我是刑警宁泽,带...
    沈念sama阅读 34,360评论 4 332
  • 正文 年R本政府宣布,位于F岛的核电站,受9级特大地震影响,放射性物质发生泄漏。R本人自食恶果不足惜,却给世界环境...
    茶点故事阅读 40,002评论 3 315
  • 文/蒙蒙 一、第九天 我趴在偏房一处隐蔽的房顶上张望。 院中可真热闹,春花似锦、人声如沸。这庄子的主人今日做“春日...
    开封第一讲书人阅读 30,782评论 0 21
  • 文/苍兰香墨 我抬头看了看天上的太阳。三九已至,却和暖如春,着一层夹袄步出监牢的瞬间,已是汗流浃背。 一阵脚步声响...
    开封第一讲书人阅读 32,010评论 1 266
  • 我被黑心中介骗来泰国打工, 没想到刚下飞机就差点儿被人妖公主榨干…… 1. 我叫王不留,地道东北人。 一个月前我还...
    沈念sama阅读 46,433评论 2 360
  • 正文 我出身青楼,却偏偏与公主长得像,于是被迫代替她去往敌国和亲。 传闻我的和亲对象是个残疾皇子,可洞房花烛夜当晚...
    茶点故事阅读 43,587评论 2 350

推荐阅读更多精彩内容