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
相關文章
相關標籤/搜索