SwiftUI是開發iOS、iPadOS、watchOS和macOS應用程序的現代化方式。
它從“舊有”方式轉變,使許多現有的蘋果框架(UIKit,AppKit和WatchKit)變得過時。
這些框架有一個共同點:它們是命令式的。
作為程序員,您可以確定事物應該以每個像素為單位如何顯示。然後,您會對用戶事件作出響應並手動更新數據。在每次更改時,您還需要決定UI應該如何更改。
SwiftUI是一個完全的變革,因為它是反應式的,UI反映了數據的狀態。不再像在UIKit中“連接事物”。
而且,您需要編寫的代碼要少得多。如果以前曾使用UIKit編寫過iPhone應用程序,您將一直在想“就這樣嗎?”。
談到代碼,使用SwiftUI,您只需編寫代碼即可。不再使用StoryBoard或Interface Builder。
我認為這很完美,因為我可以將我的代碼存儲在Git中,並可以立即看到隨時間所做的更改,而不是一些XML的亂碼。
現在,如果您以前從未使用過UIKit,您可能不明白我的意思。這對您來說是好事,不用擔心。
由於蘋果能夠從頭開始使用SwiftUI,我們有很多優勢。
第一次接觸SwiftUI應用程式令人著迷。
以下是Hello World應用程式的代碼:
import SwiftUI
struct ContentView: View {
var body: some View {
Text("Hello World")
}
}
您導入SwiftUI模塊,並聲明一個符合View協議的結構。
該協議要求該結構具有一個名為“body”的計算屬性,該計算屬性返回“some View”。
這就是我們在結構內部做的事情。
“body”計算屬性返回一個類型為“Text”的單個視圖,其中包含內容“Hello World”。
由於您將始終在SwiftUI中看到“some View”使用,現在是解釋為什麼使用它而不僅僅是“View”的好時機。
該聲明強制“body”始終返回相同類型的視圖,這對於SwiftUI的工作方式至關重要。
其中一個原因是性能。為了具有高性能,SwiftUI需要將某些事情視為理所當然。其中之一是每個結構始終返回相同類型的視圖,以便可以輕鬆檢查是否需要在屏幕上重繪。
在這種情況下,我們返回一個“Text”視圖,這是我們的結構始終返回的視圖,而不管其狀態如何。