SwiftUI 初探

从 Swift1.2 就看好 Swift,逐渐在项目中使用,而且以后的代码彻底用Swfit开发。享受到了便利,也遇到了不少坑,痛并快乐着。WWDC19 最使人兴奋的无疑是SwfitUI,这个即将统一Apple平台(iOS, padOS, macOS, TVOS, WatchOS)的声明式UI框架。也恰好做为此次内部 Tech Share 的分享,美滋滋。git

这是一场无关语言的分享,着重经过了解 SwiftUI 从而对于声明式UI前景的探索,以及苹果对于自家多平台生态的布局github

这就开始吧!编程

为何

为何关注SwiftUI?

由于声明式 UI已经成为主流,React、Flutter、Jetpack Compose、SwiftUI。swift

为何要实践SwiftUI?

受够了Storyboard 和 每次更改都须要运行才能看到结果。app

为何选择 SwiftUI?

实时更新 live preview, (不能给上厕所找借口了),不但能够预览,还能够反向生成代码,真正的微调, 多屏幕预览,一次适配全部机型。框架

声明式编程是将来

  • 代码是描述程序在作什么,可阅读性会大大提升;
  • 组件状态更容易维护在内部,减小反作用;
  • 组件之间的边界更明显,从而让组件复用更灵活。

最知名的就是SQL了,SQL 最大的特色就是只声明我想要什么(What) , 就是不说怎么作(How)。声明式编程多和链式想嵌套,每次返回操做对象,对操做对象一直操做。布局

什么是声明式UI:post

声明式UI描述的不是命令,是直接描述界面是怎样的,而忽略其实现细节。字体

React、Flutter 包括刚出的 SwiftUI 都选择了声明式的 UI,从一个侧面也印证了这一点。摒弃了将 IB 生成的 UI 内容存储在 XML 的这种很老土的作法。ui

实战:

前期准备

    • 升级mac 系统 10.15 beta(新系统才能支持实时 preview)
    • 升级Xcode 10.1.5 beta

例子

实战例子选取了苹果 SwiftUI Tutorials 实现了经常使用组件 List (UITableview),以及点击事件跳转到详情的操做。整体涵盖了经常使用的UI和Action。而且每节课课后有 Check Your Understanding 几个简单题目检测你的理解。

总结

优势

  • 更加 autolayout, 更加相对,以及和系统的适应,好比字体的 head, 好比 leadding, 更接近 Flex 布局
  • 远离XIB & Storyboard
  • 实时预览 Live preview, 不但能够预览,还能够反向生成代码,真正的微调,能够预览多个 preview,同时适配多个 device
  • WatchOS, TVOS, macOS, iOS 会调整适配的UI
  • 新实现了UI,抛弃老旧冗余的 UIKit

缺点

  • 反应仍是有些不灵敏
  • 输入联想不太好,总错,总不联想
  • Live Previe & Debug Preview, 当你要相应事件以及操做,须要打开Live Preview 模式
  • 使用较小型,定制化低的应用
  • 不适配低于 iOS 13 的设备

前景

有理由相信 苹果能够考虑把 SwiftUI 内置在 APP 包内,使开发者能够更轻易地兼容低版本的操做系统。

The shortest path to building great apps on every device

All plantform

展望

当前

将来

参考:

  1. developer.apple.com/tutorials/s…
  2. github.com/Jinxiansen/…
  3. juejin.im/post/5cfe61…
  4. juejin.im/post/5cf5f4…
  5. zhuanlan.zhihu.com/p/68057203
相关文章
相关标签/搜索