SwiftUI完全开发

-
【作 者】李智威 著
【I S B N 】978-7-5226-1822-7
【责任编辑】王开云
【适用读者群】科技
【出版时间】2023-11-22
【开 本】16开
【装帧信息】平装(光膜)
【版 次】第1版第1次印刷
【页 数】568
【千字数】857
【印 张】35.5
【定 价】¥118
【丛 书】暂无分类
【备注信息】
简介
本书特色
前言
章节列表
精彩阅读
下载资源
相关图书
内 容 提 要
SwiftUI是苹果公司推出的跨平台开源UI框架,同时支持iOS、macOS、watchOS、tvOS等多平台应用开发,使用这一框架可以使用很少的代码实现复杂的交互和功能,极大地提高了开发效率。
本书共29章,由浅到深系统性讲解了SwiftUI的背景、Swift语言的语法基础、SwiftUI基础组件、交互操作、数据存储、网络请求、硬件设备、付费模式、应用上架等内容,并在每个章节中结合生动有趣的案例进行讲解,提高书籍的趣味性。
通过对本书的学习,读者将会对SwiftUI框架及多平台开发有全面的认识,并能够使用SwiftUI进行独立开发。本书适合正在学习Swift+SwiftUI以及对SwiftUI感兴趣的开发人员阅读和参考。
序
可能你无法想象,这本书是一名产品经理写的。
创作缘由
四年前,由于机缘巧合,我开始接触和了解iOS编程。由于当时公司缺少iOS开发工程师,在我的自告奋勇下,技术总监同意了我在产品本职工作之余,协助开发公司iOS版本应用的一些基本功能的请求。
虽然那时的我,除了大学时期学习过C#、C++编程语言,毕业后从事的工作中没有使用过任何一种编程语言,但我很乐观,向技术总监“讨要”了一本编程书籍,便开始了蒙头摸索之路。
当时公司使用的是Swift+UIKit的编程方式,各种协议和样式约束让我头疼不已,每次实现一个小功能或者小页面,都几乎需要花费我一整晚的时间。后面慢慢熟悉其语法特征后,我能实现一些基本的功能了,也能和其他研发同事就某些技术问题深入讨论,这算是意想不到的收获。
说实话,从安装官方的开发工具写下第一行HelloWorld,到在模拟器中运行测试第一个待发版的App,我既懵懂又兴奋。项目在模拟器“跑”起来的那一刻,我感觉自己突破了产品经理的极限,成为了一名“懂技术”的产品经理。
之后由于对iOS编程的浓厚兴趣,我开始接触Swift+SwiftUI的编程方式。
SwiftUI是苹果公司在2019年度WWDC全球开发者大会上发布的全新框架,在国内还较少有企业用于自家商用产品的开发,而且在国内能找到的相关开发书籍特别少,因而我在学习过程中花费了很长一段时间,也为此“掉了不少头发”。
为了后续方便学习和回顾,我开始在掘金技术社区发表专栏文章,用来记录SwiftUI的学习过程。在经历了大半年在平台上更新了5个专栏约150篇文章后,我有幸和掘金技术社区签约成为签约作者。后来有幸收到了中国水利水电出版社编辑的邀请,便萌生了写作出版的想法。
这便是本书的由来。
想法和尝试
在准备写这本书之前,我一直在想如何才能让这本书生动而有趣。
虽然这本书的目标读者更多的是iOS开发工程师,或是计算机专业毕业的学生,或是想要学习iOS编程的其他从业者,但我希望这本书能够适用于所有人,而不仅是程序员。
人人都应该学会编程,人人都可以通过编程学会如何独立思考,如何分析问题和解决问题。
我不希望这是一本枯燥的书籍,也不希望读者跟着书本的内容学到了最后,还是没有办法独立开发一款理想中的App。
当初还在学习之初的我,找了很多国内外免费或付费的书籍和教程,跟着项目案例一行一行敲代码,到最后也只是实现了案例里的内容,却无法开发出一个完整的App。
这对于一个想要通过努力实现理想和抱负的人是一种很大的打击。
我理想中的书籍是,当我们一步步跟着书本学习,最后能开发出一款可以上架App Store的App;当我们编程遇到问题了,可以很快在书本对应的段落找到解决方案;当我们学习完最后一章或学到中途,就可以开发出自己想要的App,而不是仅能完成书本中的案例……当然,书本中的知识点应该是最新的。
因此,本书既会包含基础知识,也会包含一些实战案例,我们会实现一个个很小很小的精美页面,并通过对编程中复杂概念的解析,讲述如何使用SwiftUI这一响应式UI框架搭建心中的“理想国”。
勘误和反馈
由于是第一次写书,编写能力略显稚嫩,书中难免会有一些错误或者不清晰的地方,在请读者见谅的同时,也欢迎给予指正和反馈。书中的所有案例都可以从GitHub(https://github.com/ RicardoWesleyli/SwiftUI.git)中下载,如果你有任何宝贵的想法和建议,也可以直接发送邮件至16620164429@163.com,期待与你的相遇。
致谢
感谢一直支持着我的江佩琦小姐,你的李智威先生已经写完这本书啦!
感谢中国水利水电出版社万水分社的编辑王新宇老师,在我写作过程中给予的鼓励和帮助,让我能顺利完成全部书稿。
最后感谢我的父母、琦琦的父母,还有我那准备步入职场的妹妹,以及在我人生道路上指引我的张勇老师、叶泳成老师、许治老师,感谢你们对我的支持和帮助,为我照亮未来的路。
谨以此书献给我最亲爱的家人,以及众多热爱iOS的朋友们!
李智威
2023年7月于深圳
第1章 开启全新体验,你的第一个SwiftUI项目 1
1.1 初识Swift和SwiftUI 1
1.2 Xcode,你的官方开发工具 1
1.3 快来创建第一个SwiftUI项目 3
1.4 简单了解下Xcode的操作和项目结构 5
1.5 预览你的第一个项目 8
1.6 简单分析视图文件代码 11
1.7 本章小结 12
第2章 文字的魅力,Text文字的使用 13
2.1 创建一个新的视图文件 13
2.2 使用修饰符格式化文字 15
2.3 更多修饰符和使用场景 17
2.4 在项目中使用自定义字体 19
2.5 多个文字控件的组合使用 24
2.6 本章小结 26
第3章 视觉传达,Image图片的使用 27
3.1 展示一张本地图片 27
3.2 使用修饰符格式化图片 31
3.3 更多修饰符和使用场景 34
3.4 在项目中使用SF Symbols图标库 37
3.5 从互联网上获得一张图片 41
3.6 本章小结 43
第4章 图文排版,Stack布局容器的使用 44
4.1 实战案例:启动页 44
4.2 实战案例:缺省页 50
4.3 实战案例:状态显示页 52
4.4 小知识:如何收起代码块 56
4.5 本章小结 57
第5章 Swift语法初探,磨刀不误砍柴工 59
5.1 常量和变量 59
5.2 Swift中的数据类型 63
5.3 运算符及使用场景 66
5.3.1 常用的运算符 66
5.3.2 赋值运算符和算术运算符 66
5.3.3 三元运算符 67
5.3.4 比较运算符和逻辑运算符 69
5.3.5 空合运算符 70
5.4 本章小结 71
第6章 点击交互,Button按钮的使用 73
6.1 创建一个简单的按钮 73
6.2 创建一个渐变色的按钮 76
6.3 万物皆可变成按钮 77
6.4 小知识:参数值类型转换 80
6.5 使用onTapGesture修饰符 81
6.6 小知识:如何批量重命名参数名称 82
6.7 本章小结 84
第7章 文本输入,TextField文本框的使用 85
7.1 声明文本框参数 85
7.2 创建一个简单的文本框 86
7.3 使用修饰符格式化文本框 88
7.4 实战案例:登录页面 90
7.5 实战案例:搜索框 93
7.6 小知识:实现隐藏键盘 94
7.7 TextEditor多行文本框的使用 96
7.8 本章小结 99
第8章 数据呈现,List列表的使用 101
8.1 创建一个简单的列表 101
8.2 遍历数组中的数据 103
8.3 定义Model数据模型 104
8.4 使用数据模型展示数据 107
8.5 拖动排序和滑动删除 110
8.6 使用修饰符格式化List列表样式 115
8.7 本章小结 118
第9章 页面顶部,NavigationView导航视图的使用 119
9.1 导航标题和导航按钮 119
9.2 实战案例:设置页面 126
9.3 基于顶部导航的页面跳转 129
9.4 自定义返回按钮 133
9.5 实现侧滑返回 137
9.6 本章小结 138
第10章 页面底部,TabView选项卡视图的使用 139
10.1 创建一个简单的底部导航 140
10.2 使用修饰符格式化底部导航 144
10.3 实战案例:引导页 146
10.4 实战案例:轮播图 153
10.5 本章小结 156
第11章 基础表单,Form表单的使用 157
11.1 创建一个简单的表单视图 158
11.2 在Form表单中使用Toggle开关 160
11.3 在Form表单中使用Picker选择器 163
11.4 Stepper步进器和Slider滑块选择器 166
11.5 实战案例:RGB色卡 168
11.6 ColorPicker颜色选择器的使用 172
11.7 本章小结 175
第12章 提示弹窗,那些弹出的信息 177
12.1 实战案例:内容列表 177
12.2 Sheet模态弹窗 182
12.3 FullScreenCover全屏弹窗 188
12.4 ActionSheet选项弹窗 189
12.5 Alert警告弹窗 192
12.6 ContextMeun点按弹窗 195
12.7 本章小结 198
第13章 屏幕延伸,ScrollView滚动布局容器的使用 199
13.1 创建一个简单的滚动页面 200
13.2 实战案例:电商首页之轮播图 206
13.3 实战案例:电商首页之快捷按钮组 208
13.4 实战案例:电商首页之商品推荐列表 210
13.5 DisclosureGroup拓展折叠视图 214
13.6 本章小结 219
第14章 点击、长按、拖拽、缩放、旋转 220
14.1 快速了解手势修饰符 220
14.2 TapGesture点击手势 221
14.3 LongPressGesture长按手势 225
14.4 DragGesture拖拽手势 230
14.5 MagnificationGesture缩放手势 234
14.6 RotationGesture旋转手势 238
14.7 组合手势的运用 240
14.8 本章小结 244
第15章 自定义颜色,打造你的独特风格 245
15.1 前景色 245
15.2 背景色 249
15.3 边框色 252
15.4 渐变色 254
15.5 十六进制颜色 259
15.6 本章小结 262
第16章 数据流动,页面之间的数据交互 263
16.1 @State状态的使用 263
16.2 @Binding绑定的使用 266
16.3 @Environment环境的使用 271
16.4 @AppStorage数据持久化的使用 276
16.5 本章小结 278
第17章 网络请求,URLSession框架的使用 280
17.1 实战案例:色卡列表 280
17.2 初识JSON数据格式 285
17.3 URLSession框架的使用 291
17.4 MVVM架构模式的使用 293
17.5 小知识:如何实现随机展示数据 296
17.6 本章小结 297
第18章 数据持久化,FileManager框架的使用 298
18.1 实战案例:笔记应用样式 298
18.2 @AppStorage应用存储包装器 309
18.3 FileManager本地文件存储框架 313
18.3.1 准备数据模型 313
18.3.2 获得沙盒地址及文件地址 313
18.3.3 读取本地文件 314
18.3.4 存储数据到本地文件 315
18.3.5 新增、编辑、删除方法 316
18.3.6 获得当前日期方法 317
18.4 实战案例:新增笔记操作 318
18.5 实战案例:编辑笔记操作 322
18.6 实战案例:删除笔记操作 325
18.7 本章小结 326
第19章 图形绘制,Path路径和Shape形状的使用 328
19.1 SwiftUI中的基础形状 328
19.1.1 Circle圆形 328
19.1.2 Ellipse椭圆形 331
19.1.3 Rectangle矩形 333
19.1.4 RoundedRectangle圆角矩形 335
19.1.5 Capsule胶囊矩形 336
19.2 使用Path路径绘制图形 338
19.2.1 addLine绘制直线 338
19.2.2 addQuadCurve绘制贝塞尔曲线 339
19.2.3 addCurve绘制二次贝塞尔曲线 340
19.2.4 addArc绘制圆弧 341
19.3 使用Shape自定义形状 344
19.4 实战案例:倒计时圆环 345
19.5 本章小结 350
第20章 设备功能初探,拍摄、上传、保存、分享 351
20.1 从相册中选择图片 351
20.1.1 创建ImagePicker方法 351
20.1.2 使用ImagePicker方法 356
20.2 使用相机拍摄图片 360
20.2.1 设置选择器sourceType 360
20.2.2 在真机上预览效果 362
20.3 保存图片至本地相册 362
20.3.1 View转换为UIImage 363
20.3.2 展示UIImage模型对象 364
20.3.3 保存UIImage模型对象 366
20.4 分享图片到其他平台 369
20.4.1 创建ShareSheet方法 369
20.4.2 使用ShareSheet方法 370
20.5 本章小结 372
第21章 FaceID,LocalAuthentication身份认证框架的使用 373
21.1 创建一个配置开关 373
21.2 创建一个解锁页面 375
21.3 实现身份认证方法 376
21.4 在Info.plist中配置权限 378
21.5 实现登录身份认证交互 379
21.6 逻辑优化 382
21.7 本章小结 385
第22章 播放声音和视频,增强你的感官体验 386
22.1 实战案例:电子木鱼 386
22.2 实现播放声音方法 390
22.3 实战案例:文字转语音 393
22.4 创建一个帮助教程页面 397
22.5 实现播放视频方法 400
22.6 本章小结 403
第23章 新历和农历,使用DateFormatter格式化日期 404
23.1 实战案例:数字时钟 404
23.2 格式化日期 408
23.3 如何使用中国历法 413
23.4 本章小结 417
第24章 自定义样式,ViewModifier协议的使用 418
24.1 创建自定义视图 418
24.2 自定义视图修饰器 421
24.3 实战案例:注册页面 425
24.4 实战案例:自定义Toast弹窗 429
24.5 知识拓展:修改Toggle控件样式 434
24.6 本章小结 437
第25章 让应用“动”起来,加入Animation动画魔法 438
25.1 为视图添加隐性动画 438
25.2 在组合视图中使用隐性动画 441
25.3 为视图添加显性动画 444
25.4 实战案例:计时器按钮组 445
25.5 实战案例:Loading加载动画 450
25.6 实战案例:3D旋转动画 452
25.7 本章小结 454
第26章 CoreData和CloudKit,帮你更好地管理数据 455
26.1 初探CoreData框架 455
26.2 实战案例:ToDo应用 459
26.2.1 创建ToDoModel数据模型 460
26.2.2 创建ToDoListRow视图 461
26.2.3 实现toggleToDoItemCompleted方法 463
26.2.4 创建InputTextField视图 464
26.2.5 实现addToDoItem方法 465
26.2.6 实现deleteTodoItem方法 467
26.3 创建实体模型 468
26.4 创建Persistence单例 472
26.5 实现CoreData本地数据存储 473
26.5.1 在项目中使用CoreData容器 473
26.5.2 修改addToDoItem方法 477
26.5.3 修改deleteToDoItem方法 478
26.5.4 修改toggleToDoItemCompleted方法 480
26.6 实现iCloud云端数据存储 482
26.6.1 添加iCloud数据库容器 482
26.6.2 添加Background Modes能力 484
26.6.3 设置CloudKit云存储开发 486
26.7 本章小结 487
第27章 轻量互动,Widget桌面小组件的使用 488
27.1 创建Widget小组件项目 489
27.2 小组件项目文件详解 491
27.2.1 MyWidgetBundle文件 491
27.2.2 MyWidgetLiveActivity文件 492
27.2.3 MyWidget文件 492
27.2.4 MyWidget.intentdefinition文件 498
27.2.5 Assets.xcassets文件 499
27.3 实战案例:跳转微信扫一扫 500
27.4 实战案例:每日一句 503
27.4.1 完成OneWord项目 503
27.4.2 使用App Group实现数据共享 507
27.4.3 完成OneWordWidget项目 509
27.5 本章小结 515
第28章 赚取第一桶金,在应用中添加内购和订阅 516
28.1 了解应用付费机制 516
28.1.1 付费购买 517
28.1.2 应用内购 517
28.1.3 应用订阅 518
28.1.4 广告 519
28.2 实战案例:内购页面 519
28.3 在项目中集成内购功能 526
28.3.1 创建内购测试文件 526
28.3.2 创建StoreKit框架引用文件 529
28.3.3 实现应用内购功能 534
28.3.4 实现恢复购买功能 539
28.4 本章小结 540
第29章 应用上架,发布你的第一款App 541
29.1 AppIcon应用图标 541
29.2 商店预览图 544
29.3 技术支持网址URL 545
29.4 隐私政策网址URL 547
29.5 协议、税务和银行业务设置 549
29.6 正式提交上架 550
29.7 本章小结 558
- Java面向对象程序设计 [主编 姜春磊 陈虹洁]
- C语言程序设计实验指导与实训(第二版) [主编 倪燃]
- Python程序设计及实践教程 [肖朝晖]
- C语言程序设计 [魏琴 刘祖珉 赵仕波 肖阳春]
- C语言程序设计实验教程 [张小刚 司春景]
- 电气控制与PLC程序设计(第二版) [胡冠山]
- Java Web项目化设计实践教程 [邱云 曾陈萍]
- C语言程序设计(第三版) [主编 丁红 王立新 蔡开立]
- Python数据分析 [主编 冯志辉 赵磊 李放]
- Python程序设计与应用(第二版) [主编 张广渊]
- C程序设计实践教程 [刘卫国]
- C程序设计(慕课版) [刘卫国]
- 程序设计基础实践教程(C/C++语言版) [张桂芬 葛丽娜]
- C++案例项目精讲 [主编 杨国兴]
- MySQL数据库项目式教程 [陈亚峰]
- C语言程序设计习题与实验指导(第二版) [主编 甄增荣 张宾]
- C语言程序设计(第二版) [主编 甄增荣 田云霞]
- Unity3D虚拟现实应用开发实践 [主 编 刘龙]
- Python程序设计 [主编 姜春磊 陈虹洁]
- C语言程序设计实践教程(活页式) [主编 郑茵 陈巍 滕泓虬]
- 面向对象程序设计 [主编 张勇 张平华 赵小龙]
- Python程序设计基础及实战 [主编 刘健]
- C语言程序设计 [姜雪]
- Python程序设计实践教程 [王鹤琴 蔡正保]
- C++程序设计实践教程(第三版) [主编 刘卫国 曹岳辉]
- C++程序设计(第三版) [主编 曹岳辉 刘卫国]
- C语言程序设计项目化教程(活页式) [主编 张利华 潘晓利]
- 机器人流程自动化(RPA)实战——基于UiPath [主编 金鑫]
- Python 语言程序设计实践指导 [主编 张双狮]
- Python程序设计案例教程 [主编 毛锦庚 钟肖英 周贤来 ]