SwiftUI自学成长笔记
上QQ阅读APP看本书,新人免费读10天
设备和账号都新为新人

前言

坦白地说,在苹果公司2017年和2018年的全球开发者大会(WWDC)上,我并没有看到任何惊喜,每次的WWDC似乎只是对前一个版本的Swift语言进行程式化的升级。但是在2019年的WWDC上,苹果公司发布了基于Swift语言建立的声明式框架——SwiftUI,它可以用于iOS、iPadOS、watchOS、tvOS和macOS等苹果公司旗下所有主流平台的应用程序开发。毫无疑问,对于具有iOS开发经验或学习iOS应用程序开发的人来说,SwiftUI是近年来iOS应用程序开发中最为重大的改变。

我从事iOS程序开发和相关的教学工作已有十多年的时间,已经习惯使用UIKit框架搭建用户界面。通过混合使用故事板(Storyboard)和Swift代码来构建用户界面,曾经是非常流行和普遍的布局方式。但是,无论你是喜欢使用Interface Builder在故事板中以可视化的方式创建用户界面,还是喜欢完全使用Swift代码创建用户界面,它们最终都会依赖UIKit框架实现。可能你会有这样一个疑虑:我为什么非要使用SwiftUI框架而抛弃之前的UIKit框架来搭建用户界面呢?原因有以下三点。

1.新技术必须掌握

SwiftUI是苹果公司于2019年推出的界面布局框架,目的就是取代之前的UIKit框架,从而实现更高效的界面搭建,以适应现在及将来可能推出的更多规格和型号的苹果产品。

诚然,SwiftUI目前依然有很多不足之处,如果你是使用UIKit框架的高手,那么利用SwiftUI搭建界面的确需要花费更多的学习成本。但这就和从Objective-C过渡到Swift一样,需要一个过程,一旦走过去,你就会发现前方的路“异常平坦”,且“风景如画”。

2.新的框架带来新的设计思路

SwiftUI类似于MVVM架构,它比之前应用程序开发的MVC架构更先进,更便于代码的维护,设计思路更清晰。

3.执行效率高,更新迭代快

其实,在iOS开发的过程中,最耗费时间的并不是代码逻辑,而是对用户界面的处理。SwiftUI框架可以给你更快速的迭代和测试体验,帮你更快捷地实现你想要的功能。

对于我来说,SwiftUI不仅是一个全新的框架,而且从根本上改变了在iOS或其他苹果系统平台上创建用户界面的方法。苹果系统不再使用命令式的编程风格,而是提倡使用声明式、函数式的编程风格;不是确切指定用户界面控件的布局和功能,而是专注于描述在构建用户界面时需要哪些控件,以及通过声明式编程指明需要执行哪些操作。

2020年,苹果公司将更多的功能和用户界面控件添加到了Xcode 12的SwiftUI框架中,并将设计提升到了一个更高的水准。与之前的UIKit相比,我们可以使用更少的代码来开发精美的动画效果。

利用SwiftUI设计用户界面并不是要求你马上放弃使用Interface Builder和UIKit框架,但是,SwiftUI代表了苹果系统各个平台上应用程序开发的未来。为了能够始终站在技术创新的最前沿,推荐你从现在开始使用这种新的界面开发方式。

希望本书能够帮助你使用SwiftUI框架开发并构建一些令人惊叹的应用程序。

本书共8章。第1章带领读者制作一个简单的卡片应用程序,了解利用SwiftUI实现界面布局的基础知识。第2章利用结合北京的地域特色,使用Tab View和滚动视图制作一个介绍北京美食和胡同的应用程序。第3章制作的“蔬菜百科全书”应用程序涉及导航视图、自定义按钮外观和使用微动画效果提升用户体验。第4章将带领读者制作一个介绍中国十大名胜古迹的应用程序,其中会使用到MapKit框架呈现地图。第5章通过购物应用程序“爱上写字”介绍如何在程序中利用网格视图进行布局并创建自定义形状。第6章带领读者制作“奇妙水果机”游戏程序,了解游戏设计的基本原理,并使用User Defaults将游戏数据存储到本地。第7章会制作一款Todo类应用程序,介绍如何使用Core Data将数据存储到数据库之中,并由用户自定义应用程序的主题颜色。第8章通过制作卡片选择应用程序,让读者了解如何在SwiftUI中实现滑动手势。

致谢

感谢伟大到可以改变这个世界的史蒂夫·乔布斯,他的精神对我产生了非常大的影响。感谢刘颖、刘怀羽、张燕,以及我身边的同事们,感谢你们对我的支持与帮助,并时时刻刻给我信心和力量。

谨以此书献给我最亲爱的家人,以及众多热爱iOS开发的朋友们!

刘铭

2021年7月

本书项目资源可通过微信扫描封底二维码获取。