内容简介:从 Swift1.2 就看好Swift,逐渐在项目中使用,并且之后的代码完全用Swfit开发。享受到了便利,也遇到了很多坑,痛并快乐着。WWDC19 最令人兴奋的无疑是SwfitUI,这个即将统一Apple平台(iOS, padOS, macOS, TVOS, watchOS)的声明式UI框架。也刚好作为这次内部 Tech Share 的分享,美滋滋。这就开始吧!因为声明式 UI已经成为主流,React、Flutter、Jetpack Compose、SwiftUI。
本次分享又名:AppleFuckFlutter.framework 初探
从 Swift1.2 就看好Swift,逐渐在项目中使用,并且之后的代码完全用Swfit开发。享受到了便利,也遇到了很多坑,痛并快乐着。WWDC19 最令人兴奋的无疑是SwfitUI,这个即将统一Apple平台(iOS, padOS, macOS, TVOS, watchOS)的声明式UI框架。也刚好作为这次内部 Tech Share 的分享,美滋滋。
这就开始吧!
为什么
为什么关注SwiftUI?
因为声明式 UI已经成为主流,React、Flutter、Jetpack Compose、SwiftUI。
为什么要实践SwiftUI?
受够了Storyboard 和 每次更改都需要运行才能看到结果。
为什么选择 SwiftUI?
实时更新 live preview, (不能给上厕所找借口了),不但可以预览,还可以反向生成代码,真正的微调, 多屏幕预览,一次适配所有机型。
声明式编程是未来
-
代码是描述程序在做什么,可阅读性会大大提高;
-
组件状态更容易维护在内部,减少副作用;
-
组件之间的边界更明显,从而让组件复用更灵活。
最知名的就是 SQL 了,SQL 最大的特点就是只声明我想要什么(What) , 就是不说怎么做(How)。声明式编程多和链式想嵌套,每次返回操作对象,对操作对象一直操作。
什么是声明式UI:
声明式UI描述的不是命令,是直接描述界面是怎样的,而忽略其实现细节。
React、Flutter 包括刚出的 SwiftUI 都选择了声明式的 UI,从一个侧面也印证了这一点。摒弃了将 IB 生成的 UI 内容存储在 XML 的这种很老土的做法。
实战:
前期准备
-
升级mac 系统 10.15 beta(新系统才能支持实时 preview)
-
升级Xcode 11 beta
例子
实战例子选取了苹果SwiftUI Tutorials 实现了常用组件 List (UITableview),以及点击事件跳转到详情的操作。总体涵盖了常用的UI和Action。并且每节课课后有 Check Your Understanding 几个简单题目检测你的理解。
总结
优点
-
更加 autolayout, 更加相对,以及和系统的适应,比如字体的 head, 比如 leadding, 更接近 Flex 布局
-
点开 SwiftUI Text 属性会发现是一个不同于 UIText 的新的属性,猜测SwiftUI 在较为底层重新实现了UI,抛弃了(或在逐渐抛弃)冗余UIKit,使渲染更高效。
-
实时预览 Live preview, 不但可以预览,还可以反向生成代码,真正的微调,可以预览多个 preview,同时适配多个 device
-
WatchOS, TVOS, macOS, iOS 会调整适配的UI *4
-
新实现了UI,抛弃老旧冗余的 UIKit
缺点
-
反应还是有些不灵敏
-
输入联想不太好,总错,总不联想
-
Live Preview & Debug Preview, 当你要相应事件以及操作,需要打开Live Preview 模式
-
使用较小型,定制化低的应用,精细的定制化反而破坏了声明式UI提供的系统定制UI
-
不适配低于 iOS 13 的设备
前景
有理由相信 苹果可以考虑把 SwiftUI 内置在 APP 包内,使开发者可以更轻易地兼容低版本的操作系统。
The shortest path to building great apps on every device
以上所述就是小编给大家介绍的《SwiftUI 初探》,希望对大家有所帮助,如果大家有任何疑问请给我留言,小编会及时回复大家的。在此也非常感谢大家对 码农网 的支持!
猜你喜欢:本站部分资源来源于网络,本站转载出于传递更多信息之目的,版权归原作者或者来源机构所有,如转载稿涉及版权问题,请联系我们。
反应式设计模式
Roland Kuhn、Brian Hanafee、Jamie Allen / 何品、邱嘉和、王石冲、林炜翔审校 / 清华大学出版社 / 2019-1-1 / 98.00 元
《反应式设计模式》介绍反应式应用程序设计的原则、模式和经典实践,讲述如何用断路器模式将运行缓慢的组件与其他组件隔开、如何用事务序列(Saga)模式实现多阶段事务以及如何通过分片模式来划分数据集,分析如何保持源代码的可读性以及系统的可测试性(即使在存在许多潜在交互和失败点的情况下)。 主要内容 ? “反应式宣言”指南 ? 流量控制、有界一致性、容错等模式 ? 得之不易的关于“什么行不通”的经验 ? ......一起来看看 《反应式设计模式》 这本书的介绍吧!