作者 | 屠敏&伍杏玲

出品 | CSDN(CSDNnews)

相信大家已经浏览完苹果 2019 开发者大会
<http://mp.weixin.qq.com/s?__biz=MjM5MjAwODM4MA==&mid=2650721672&idx=1&sn=ae2532697d31a2417fce3421bae0c416&chksm=bea6bc5b89d1354d81a60d95389213f25301c1fa0562822ac098f9f9ec4982d48eee0cde4803&scene=21#wechat_redirect>
上几大新发布:价格令人咂舌的新款MacPro、iPad喜提自己的 OS 系统、新版 iOS 13 秒变“黑寡妇”模式,macOS 替代 iTunes 等。

在大会的压轴环节里,苹果宣布一个重磅消息:

苹果全新的 UI 框架——SwiftUI 来了!

早在2017年,Google 推出了移动 UI 框架 Flutter,便于开发者在 iOS 和 Android 系统上快速构建高质量的原生用户界面。

那么失去先发之势、只支持苹果系统的 SwiftUI 具备哪些出彩的特性呢?

 



拖拽控件生成代码,所见即所得不再是梦!

 

据官网介绍,SwiftUI 是基于 Swift 语言,使用一组工具和 API 可在所有的苹果平台上构建用户界面。由于 SwiftUI
拥有易读、自然编写的声明式 Swift 语法,这可与 Xcode 一起协同代码的设计。SwiftUI 具有自动支持动态类型、暗黑模式、本地化和可访问性的特点。

会上,苹果公司软件工程高级副总裁 Craig Federighi 演示了如何用 SwiftUI 将一百行代码简化为只有十几行。 

看起来 SwiftUI 操作简便,那么开发者可以所见即所得,不用写代码控制了吗?一起来看看它的特性:

一、声明性语法

SwiftUI 使用声明性语法,开发者可以简单地说明用户界面应该长什么样的。例如,当你写一个视图时,可以写一个
List,里头再描述每个字段的对齐方式、字体和颜色。

这样的代码比以前更简单,易于阅读,也节省开发时间和维护成本。

这种声明式风格也适用于复杂的功能上,如动画。之前对于开发者来说,动画是较头疼的功能,即使用了 Lottie 动画第三方库,一位 iOS 开发者表示,用传统 
Objective-C 写的话大概需要 10 行代码。

通过 SwiftUI,只用几行代码便可轻松地将动画添加到几乎所有控件中。



绘制动画 

图源https://github.com/Jinxiansen/SwiftUI

在运行时,系统会创建平滑移动所需的所有步骤,甚至在中断时,能保持App继续稳定使用。

二、设计工具

Xcode 11自带有设计工具,配合 SwiftUI 使用的话,可通过拖拽来构建界面。

当开发者在右边的设计画布区编辑时,其所有内容都与左边的编辑器中的代码完全同步。

代码在键入时立即显示为预览,此时开发者对该预览所做的任何更改都会立即显示在代码中。并且 Xcode
会立即重新编译更改代码,将其插入到应用程序的运行版本中,实时所见即所得,还可编辑。



*
拖放功能

现在开发者只需拖动画布上的控件,便可在用户界面中排列组件。打开检查器,选择字体、颜色、对齐方式或其他的设计选项,开发者还可以使用光标重新排列控件。


这些可视化编辑器也可以在代码编辑器中使用,如果开发者更喜欢手动编码界面的话,可使用检查器为每个控件发现新的修改器。还可以从库中拖出控件,直接将其拖放到设计画布上,或直接加在代码上。

*
动态更换功能

由于 Swift 编译器是在 Xcode 中编辑和运行的,所以开发中的 App 会实时地构建和运行。

开发者看到的设计画布不是与真实的用户界面相近,它是一个实时 App。Xcode 可以直接在这个实时 App
中使用“动态替换”的方式来更换已编辑的代码,这也是 Swift 的一个新功能。

*
预览

开发者可以在 SwiftUI 视图下,创建一个或多个预览,来获取示例的数据。还可以配置用户几乎可能看到的各类内容,例如大字体、本地化或“暗黑模式”。

当然,预览可以发给任何苹果设备,也可以在任何方向上显示开发的 UI。



总的来说,SwiftUI 使用更少的代码,更优的交互方式来供开发者设计 UI。






GitHub Package Registry 将支持 Swift 包





随着 Swift 越来越广泛的应用,6 月3 日,GitHub 宣布:GitHub Package Registry 要支持 Swift 包了!

早在5月10日,GitHub 已公布 GitHub Package Registry
的测试版,这是一种软件包管理服务,可以轻松地在源代码旁发布公共或私有软件包。目前 GitHub Package
Registry已支持有:JavaScript(npm)、Java(Maven)、Ruby(RubyGems)、.NET(NuGet)和Docker等。



这样,Swift包可以让开发者轻松地在项目和Swift社区中共享库和源代码。据介绍, Swift 包管理是 GitHub
上提供,用于构建、运行、测试、打包Swift代码的跨平台工具。这个软件包配置是用 Swift 编写的,可以让开发者轻松地配置
Target,声明产品和管理各种依赖关系。

以后通过 Swift 包管理和 GitHub Package Registry,开发者可以更轻松地发布和管理 Swift 软件包。

那么后发两年的 SwiftUI 和 Flutter相比,可以后来追上吗?声明式 UI 编程会是未来趋势吗?

对此,CSDN(ID:CSDNnews)采访抖音 iOS 工程师黄文臣来给我们具体分析。






SwiftUI 硬伤:只用于苹果生态

声明式编程是未来




CSDN:如何评价苹果最新发布的 SwiftUI?

黄文臣:SwiftUI 是为 iOS/macOS/tvOS 等 Apple 生态提供一套统一的UI框架。对于写 iOS 的同学,假如去开发
macOS,就不需要再学一次 AppKit 了,降低了苹果生态下跨平台的门槛。并且 Xcode 11 针对 SwiftUI 还提供了热加载 和
preview,能够大幅度提高UI开发效率。SwiftUI 提供了一种声明式的 UI 编写方式,结合新推出的响应式框架(Combine),iOS
生态下终于可以像 Flutter、React 那样写代码了。

CSDN:从你个人角度来看,苹果为什么会推出 SwiftUI?和 Google 的 Flutter 做个对比?

黄文臣:iOS/iPadOS/MacOS 系统的差异会越来越大,提供了这样一套统一的 UI,有利于开发者为苹果生态贡献跨平台的 App,这对于 macOS
这种 App 数量比较少的平台尤为重要。

Flutter 真正的解决了跨平台:iOS/Android/Web/Desktop,让开发者能够只学习一次,为多平台编写应用。

SwiftUI 目前只是专注在苹果生态,这是一个硬伤,不过 SwiftUI 还处在婴儿阶段,未来就看苹果是否想要去支持其他平台了。

CSDN:在这样的趋势下,你觉得声明式 UI 编程会是应用开发未来?

黄文臣:毫无疑问,声明式编程是未来。

声明式编程有几个优点:

*
代码是描述程序在做什么,可阅读性会大大提高;

*
组件状态更容易维护在内部,减少副作用;

*
组件之间的边界更明显,从而让组件复用更灵活。

React、Flutter 包括刚出的 SwiftUI 都选择了声明式的 UI,从一个侧面也印证了这一点。




 

Swift 开发者喜大普奔

你还在用 Objective-C 吗?

 

那么对于这款神器,普通开发者怎么看呢?

@dimmke:

我想说一声感谢,作为一名在业务时间学习 iOS 开发的网络开发人员,我之前是用编程的方式来构建视图。

在我看来,将 IB 生成的 UI 内容存储在 XML 的技术,是很老土的做法。我肯定期待它应该生成和自己变成写的相同的代码。

但是用编程的方式来构建 UI 的代码,这是很非常复杂。现在 SwiftUI 看起来是这么简单和声明性,对于未来想成为 App
开发一员的我来说,感觉更有希望了!

@fphilipe:

对于我这个 iOS 开发者来说,这是从业来迄今为止最大的一次宣布。

虽然还没有机会深入研究,但将 UITableViewController 与仅包含声明性代码的片段进行比较,SwiftUI 看起来是比较有前景的。

唯一的缺点是,假如老的 iOS 版本仍然需要支持的话,我们必须等待一两年才能使用它,让我们期待 iOS 13 能更快地被用起来吧。

也有知名 iOS 开发者图拉鼎提醒道:

如果说 2014 年 Apple 发布 Swift 1.0 是一个「尝试」的话,那么 2019 年 Apple 发布 Swift 5.0、Swift
5.1、SwiftUI、Combine……就是一个转折了。

2014-2019 年,开发者可以无视 Swift,继续用 Objective-C,也没有啥影响(其实多少开始有了)。

但是 2019 年开始,一切都不一样了,转折正式开启。

总的来说,SwiftUI的推出对于开发者来说是利好的,节约开发者的时间,提高代码的可阅读性。但苹果比谷歌晚了两年才推出这UI 框架,且与跨生态的
Flutter 不同的是,苹果带有一贯的封闭性,只能在自己单一的生态应用里用。未来 SwiftUI 是否能追赶 Flutter 需保留大大的问号。

另外,对于仍在使用 Objective-C,不愿意接受 Swift 的开发者来说,SwiftUI
从在侧面上证明 Swift 的流行与未来趋势,对于这部分开发者来说,SwiftUI 的推出是改变的机遇也是挑战。

官网介绍:

https://developer.apple.com/xcode/swiftui/

【END】



作为码一代,想教码二代却无从下手:


听说少儿编程很火,可它有哪些好处呢?

孩子多大开始学习比较好呢?又该如何学习呢?

最新的编程教育政策又有哪些呢?

下面给大家介绍CSDN新成员:极客宝宝(ID:geek_baby)

戳他了解更多↓↓↓




 热 文 推 荐 


<http://mp.weixin.qq.com/s?__biz=Mzg3MDA4NDkxMQ==&mid=2247484004&idx=1&sn=fa642914b7cab7e483efc62fa058a14c&chksm=ce927a24f9e5f332e82948440314ab8f41396188d35ca311a2532a91e4aaaac7ea318ca027da&scene=21#wechat_redirect>
史上最强最贵 Mac Pro 诞生,iPadOS 和 iOS 分家!WWDC19 全面总结
<https://blog.csdn.net/csdnnews/article/details/90816073>


<http://mp.weixin.qq.com/s?__biz=Mzg3MDA4NDkxMQ==&mid=2247484004&idx=1&sn=fa642914b7cab7e483efc62fa058a14c&chksm=ce927a24f9e5f332e82948440314ab8f41396188d35ca311a2532a91e4aaaac7ea318ca027da&scene=21#wechat_redirect>
Python 爬取 42 年高考数据,告诉你高考为什么这么难?
<https://blog.csdn.net/csdnnews/article/details/90816076>



<http://mp.weixin.qq.com/s?__biz=Mzg3MDA4NDkxMQ==&mid=2247484004&idx=1&sn=fa642914b7cab7e483efc62fa058a14c&chksm=ce927a24f9e5f332e82948440314ab8f41396188d35ca311a2532a91e4aaaac7ea318ca027da&scene=21#wechat_redirect>
Flutter 是移动应用程序开发的未来? <https://blog.csdn.net/csdnnews/article/details/90816074>


☞从沉迷游戏到信奥冠军、保送清华,这位天才少年是如何做到的?| 人物志
<http://mp.weixin.qq.com/s?__biz=Mzg3MDA4NDkxMQ==&mid=2247484004&idx=1&sn=fa642914b7cab7e483efc62fa058a14c&chksm=ce927a24f9e5f332e82948440314ab8f41396188d35ca311a2532a91e4aaaac7ea318ca027da&scene=21#wechat_redirect>


☞被小公司毁掉的名校毕业生 | 程序员有话说
<http://mp.weixin.qq.com/s?__biz=MzA5MzY4NTQwMA==&mid=2651011361&idx=3&sn=b45003ec459f84784cf223a93a3ea1db&chksm=8bad8ad6bcda03c0f336234dbd1b182daae278dc866ff583a0f943e3d232b7dcc5e91147e85e&scene=21#wechat_redirect>

如何在厕所、垃圾桶或小树林捡一枚BCH?看完后我笑了...
<https://blog.csdn.net/Blockchain_lemon/article/details/90761843>

☞Unix风雨五十年:老兵远去,新秀崛起
<http://mp.weixin.qq.com/s?__biz=MzA3MjY1MTQwNQ==&mid=2649828119&idx=1&sn=7cd266ab10dfdd5d00ef56ab95bb4bc6&chksm=871e8cf5b06905e3d256802625451d2b1686061b129dd8d59d7799b6716305bbc6562e89e22e&scene=21#wechat_redirect>

☞Python从入门到精通,这篇文章为你列出了25个关键技术点(附代码)
<http://mp.weixin.qq.com/s?__biz=MzU5MjEwMTE2OQ==&mid=2247486517&idx=1&sn=a50711dedf6c53989f4a99fe9b732362&chksm=fe25a66bc9522f7dfab7d237cddfee8ddfff519eaa657a84c19199efab9a0fcfa93aa24ea932&scene=21#wechat_redirect>

IEEE“撑不住”了?声明解除对华为评审限制
<https://blog.csdn.net/csdnnews/article/details/90761780>

☞敲代码时,程序员戴耳机究竟在听什么?
<http://mp.weixin.qq.com/s?__biz=MzA5MjcxNjc2Ng==&mid=2650560072&idx=1&sn=6d4a2e92c9b7cba5a78f8817cb2cd1c9&chksm=88601df9bf1794ef9d3901b34eec77e5a23ee7d3393287da26a5a834ed88839babc78fb37003&scene=21#wechat_redirect>

点击阅读原文,输入关键词,即可搜索您想要的 CSDN 文章。
你点的每个“在看”,我都认真当成了喜欢

友情链接
ioDraw流程图
API参考文档
OK工具箱
云服务器优惠
阿里云优惠券
腾讯云优惠券
华为云优惠券
站点信息
问题反馈
邮箱:ixiaoyang8@qq.com
QQ群:637538335
关注微信