本书从实战应用出发,系统地讲解SwiftUI开发的全过程,内容丰富且实用性强,旨在帮助读者快速上手SwiftUI开发。
本书共14章,从SwiftUI的基础概念开始,逐渐深入分析视图、动画、自动布局机制、栏目、代码整理、参数存储、网络请求、架构设计、设备管理、数据存储等主题,为读者提供全面的理论知识和实战技巧。
本书适合对SwiftUI感兴趣的读者阅读。无论你是初学者还是有一定经验的开发者,都能够通过本书全面了解SwiftUI的基础知识和实战技巧,并将其应用到实际项目中,开发出优秀的iOS应用。
1. 从理论基础到实战案例:符合初学者的学习路线,指导读者快速上手开发iOS应用。
2. 涵盖7大关键主题:围绕SwiftUI的七大关键主题,帮助读者全面掌握Swift+SwiftUI 开发。
3. 涉及10+应用案例:通过案例将抽象的知识具体化,指导读者体验完整的SwiftUI开发流程。
4. 附赠全书源代码:本书配套赠送每章实战案例的源代码,方便读者边学边练。
李智威,iOS 独立开发者、高级产品经理、稀土掘金技术社区签约作者,拥有6年B端SaaS产品开发经验,从零开始负责过国内Top 3上市企业数智化项目的产品规划工作。独立开发并上架“不言笔记”“Linkcard 卡包”等应用,出版过《SwiftUI完全开发》等图书。曾获我爱黑“可颂”AI Hackathon大语言模型应用创新挑战赛优胜奖。
第1章 未来已来:开始使用Swift和SwiftUI 1
1.1 初识SwiftUI 1
1.2 Swift和SwiftUI的关系 2
1.3 学习SwiftUI之前的准备工作 3
1.3.1 Mac计算机 3
1.3.2 Xcode开发工具 4
1.3.3 iPhone真机 5
1.4 创建第一个SwiftUI项目 5
1.5 Xcode常用功能介绍 8
1.5.1 代码编辑区域 9
1.5.2 实时预览窗口 10
1.5.3 项目预览操作栏 12
1.6 项目文件结构详解 16
1.6.1 项目主文件 17
1.6.2 项目入口文件 20
1.6.3 Assets库 22
1.6.4 Preview Content文件夹 23
第2章 快速入门:创建第一个SwiftUI项目 24
2.1 视图、视图修饰符、布局方式 24
2.2 Library 27
2.2.1 Views栏目 27
2.2.2 Modifiers栏目 29
2.2.3 Code Snippet栏目 30
2.2.4 Image和Color栏目 31
2.2.5 SF Symbols栏目 31
2.3 实战案例:每日一句 32
2.3.1 导入并显示图片素材 32
2.3.2 使用Text视图显示文字 35
2.3.3 对多个视图进行布局 36
2.3.4 调整视图的样式 37
2.3.5 创建“推荐文字”数据集 39
2.3.6 实现参数绑定 40
2.3.7 实现随机推荐文字 41
第3章 初探动画:感受SwiftUI独特的魅力 43
3.1 深入浅出使用Button视图 43
3.1.1 创建一个Button视图 43
3.1.2 修改Button视图样式 44
3.1.3 组合多个Button视图 46
3.1.4 自定义按钮样式 47
3.2 引入条件判断语句 49
3.2.1 三元运算符 49
3.2.2 if-else语句 50
3.2.3 条件判断语句实践 52
3.3 神奇的SwiftUI动画 54
3.3.1 给视图添加动画效果 54
3.3.2 隐性动画和显性动画 55
3.3.3 转场动画 57
第4章 视图精析:探索SwiftUI自动布局机制 60
4.1 View和some View的区别 60
4.2 修饰符适用场景 63
4.2.1 Image视图常用修饰符 63
4.2.2 Text视图常用修饰符 65
4.2.3 Stack布局容器常用修饰符 66
4.3 创建可交互的按钮 69
4.4 SwiftUI界面布局规则 70
4.4.1 视图的尺寸大小 71
4.4.2 视图的位置 72
第5章 布局练习:开发一个“个人简介”界面 74
5.1 搭建“基本信息”栏目 74
5.1.1 个人头像 75
5.1.2 个人信息 78
5.1.3 个人介绍 83
5.2 搭建“个人成就”栏目 84
5.2.1 单个数据指标 84
5.2.2 多个数据指标 85
5.2.3 视图背景色 88
5.3 搭建“专栏列表”栏目 89
5.3.1 数据模型 89
5.3.2 单个文章专栏 91
5.3.3 多个文章专栏 92
5.4 项目预览 94
第6章 代码整理:让项目代码更加清晰 96
6.1 自定义some View 96
6.1.1 封面图片视图 97
6.1.2 Slogan文字视图 97
6.1.3 快捷登录入口视图 98
6.1.4 用户条款视图 99
6.2 自定义结构体 102
6.2.1 自定义LoginBtnView视图 103
6.2.2 使用LoginBtnView视图 104
6.3 自定义extension方法 105
6.4 项目文件整理 107
6.4.1 代码块管理 107
6.4.2 文件夹管理 108
第7章 项目实战:开发一款“Note笔记”应用 111
7.1 搭建Note数据模型 111
7.2 搭建“Note笔记”界面 113
7.2.1 笔记列表 114
7.2.2 界面标题 117
7.2.3 新增按钮 118
7.3 搭建“新增笔记”界面 119
7.3.1 文本框 119
7.3.2 按钮组 121
7.4 实现App的相关功能 124
7.4.1 打开弹窗 124
7.4.2 关闭弹窗 126
7.4.3 新增笔记 130
7.4.4 删除笔记 132
第8章 项目实战:开发一款“BMI计算器”应用 134
8.1 Form视图介绍 134
8.2 搭建“BMI计算页”界面 137
8.2.1 信息录入 137
8.2.2 参考标准 139
8.2.3 计算按钮 142
8.2.4 界面标题 143
8.3 搭建“BMI结果页”界面 145
8.3.1 计算结果 145
8.3.2 “重新计算”按钮 148
8.4 实现App的相关功能 149
8.4.1 界面跳转 149
8.4.2 返回跳转 151
8.4.3 BMI计算 152
8.4.4 BMI结果 153
第9章 参数存储:初识数据持久化机制 156
9.1 搭建“常规设置”栏目 156
9.1.1 消息通知 157
9.1.2 深色模式 158
9.2 搭建“个性化”栏目 160
9.2.1 主题颜色 161
9.2.2 系统语言 162
9.2.3 字体大小 164
9.3 搭建“关于我们”栏目 165
9.3.1 意见反馈 165
9.3.2 去Apple Store评分 167
9.3.3 关于应用 169
9.4 实现参数持久化方法 170
9.4.1 UserDefaults 171
9.4.2 @AppStorage属性包装器 172
第10章 网络请求:连接这个多彩的世界 174
10.1 从互联网上请求一张图片 174
10.1.1 使用AsyncImage视图 175
10.1.2 添加默认视图 175
10.1.3 设置不同状态下的视图 176
10.1.4 实现刷新功能 178
10.2 URLSession网络请求框架 180
10.2.1 基础视图搭建 180
10.2.2 实现网络请求方法 181
10.3 开发一个“壁纸推荐”界面 183
10.3.1 数据模型 184
10.3.2 单张壁纸 185
10.3.3 壁纸列表 187
10.3.4 界面标题 188
10.3.5 网络请求 189
第11章 架构设计:深入浅出MVVM模式 192
11.1 开发一个“历史上的今天”界面 193
11.1.1 数据模型 193
11.1.2 视图 194
11.1.3 视图模型 196
11.2 搭建底部导航栏 200
11.3 开发一个“日历”界面 201
11.3.1 搭建当前年月栏目 202
11.3.2 实现更新日期方法 202
11.3.3 实现格式化日期拓展方法 204
11.3.4 搭建工作周栏目 205
11.3.5 搭建日历时间栏目 206
11.3.6 实现获得日期数组方法 207
11.3.7 实现格式化时间拓展方法 209
11.3.8 实现起始日期匹配方法 210
11.3.9 实现选中当前日期方法 212
第12章 设备管理:掌握Core Services的奥秘 215
12.1 开发一个“身份认证”界面 215
12.1.1 卡片样式 216
12.1.2 视图界面 217
12.2 实现“人脸识别”栏目的功能 218
12.2.1 创建FaceIDAuthManager数据模型 218
12.2.2 实现FaceID认证方法 218
12.2.3 配置FaceID认证权限 219
12.2.4 调用FaceID认证功能 220
12.3 实现上传证件功能 221
12.3.1 实现拍照和图片上传方法 221
12.3.2 配置相册和相机权限 223
12.3.3 实现选择上传方式弹窗 223
12.3.4 调用图片上传方法 225
12.3.5 实现显示上传图片逻辑 227
第13章 数据存储:使用FileManager 230
13.1 搭建底部导航栏 231
13.2 开发一个“推荐”界面 232
13.2.1 sentences文字数组 232
13.2.2 文字卡片 233
13.2.3 滑动卡片 234
13.2.4 “收藏”按钮 236
13.3 开发一个“笔记”界面 237
13.3.1 数据模型 237
13.3.2 视图模型 237
13.3.3 视图 238
13.4 实现收藏文字功能 241
13.4.1 实现获得文字方法 241
13.4.2 实现添加笔记方法 243
13.4.3 实现获得当前日期方法 243
13.4.4 调用添加笔记方法 244
13.4.5 共享ViewModel实例 245
13.5 实现数据持久化功能 246
13.5.1 实现存储笔记方法 246
13.5.2 实现读取笔记方法 248
13.5.3 实现删除笔记方法 249
第14章 项目实战:开发一款“目标人生”应用 252
14.1 开发一个“启动页”界面 252
14.1.1 使用Launch Screen文件 252
14.1.2 设置Launch Screen来源 255
14.1.3 预览“启动页”界面 255
14.2 开发一个“引导页”界面 256
14.2.1 功能卡片 256
14.2.2 轮播卡片 257
14.2.3 “开始使用”按钮 258
14.3 开发一个“创建目标”界面 259
14.3.1 目标名称 259
14.3.2 达成日期 260
14.3.3 日期格式化 261
14.3.4 操作按钮 263
14.4 实现打开/关闭弹窗功能 264
14.4.1 打开弹窗 264
14.4.2 通用设置 265
14.4.3 关闭弹窗 267
14.5 开发一个“首页”界面 267
14.5.1 数据模型 268
14.5.2 单例模式 271
14.5.3 视图模型 272
14.5.4 视图 273
14.6 实现新增目标功能 278
14.6.1 实现新增目标方法 278
14.6.2 调用新增目标方法 279