总览
如果你想要入门SwiftUI的使用,那Apple这次给出的官方教程绝对给力。这个教程提供了非常详尽的步骤和说明,网页的交互也是一流,是觉得值得看和动手学习的参考。
不过,SwiftUI中有一些值得注意的细节在教程里并没有太详细提及,也可能造成一些困惑。这篇文章以我的个人观点对教程的某些部分进行了补充说明,希望能在大家跟随教程学习SwiftUI的时候有点帮助。这篇文章的推荐阅读方式是,一边参照SwiftUI教程实际动手进行实现,一边在到达对应步骤时参照本文加深理解。在下面每段内容前我标注了对应的教程章节和链接,以供参考。
在开始学习SwiftUI之前,我们需要大致了解一个问题:为什么我们会需要一个新的UI框架。
为什么需要SwiftUI UIKit面临的挑战
对于Swift开发者来说,昨天的WWDC 19首日Keynote和Platforms State of the Union上最引人注目的内容自然是SwiftUI的公布了。从iOS SDK 2.0开始,UIKit已经伴随广大iOS开发者经历了接近十年的风风雨雨。UIKit的思想继承了成熟的AppKit和MVC,在初出时,为iOS开发者提供了良好的学习曲线。
UIKit提供的是一套符合直觉的,基于控制流的命令式的编程方式。最主要的思想是在确保View或者View Controller生命周期以及用户交互时,相应的方法(比如viewDidLoad或者某个target-action等)能够被正确调用,从而构建用户界面和逻辑。不过,不管是从使用的便利性还是稳定性来说,UIKit都面临着巨大的挑战。我个人勉强也能算是iOS开发的“老司机”了,但是「掉到UIKit的坑里」这件事,也几乎还是我每天的日常。UIKit的基本思想要求View Controller承担绝大部分职责,它需要协调model,view以及用户交互。这带来了巨大的side effect以及大量的状态,如果没有妥善安置,它们将在View Controller中混杂在一起,同时作用于view或者逻辑,从而使状态管理愈发复杂,最后甚至不可维护而导致项目失败。不仅是作为开发者我们自己写的代码,UIKit本身内部其实也经常受困于可变状态,各种奇怪的bug也频频出现。
声明式的界面开发方式
近年来,随着编程技术和思想的进步,使用声明式或者函数式的方式来进行界面开发,已经越来越被接受并逐渐成为主流。最早的思想大概是来源于Elm,之后这套方式被React和Flutter采用,这一点上SwiftUI也几乎与它们一致。总结起来,这些UI框架都遵循以下步骤和原则:
使用各自的DSL来描述「UI应该是什么样子」,而不是用一句句的代码来指导「要怎样构建UI」。
来自 “ ITPUB博客 ” ,链接:https://blog.itpub.net/69969661/viewspace-2685275/ ,如需转载,请注明出处,否则将追究法律责任。