SwiftUI給咱們的編程帶來巨大便利,用View取代了UIView,用好用的List取代了繁瑣的UITablewView,用VStack、HStack、ZStack取代了複雜的autolayout。可是SwiftUI最大意義在於給咱們提供了一個新的開發App的解決方案。
在舊世界裏,萬物皆對象,繼承是開發的法寶。在SwiftUI世界裏萬物皆View,繼承成爲了二等公民,組合坐上了頭等艙。編程
struct FootnoteText : View { let text: String var body: some View { MultiLineText(text: text, alignment: .center) .font(.footnote) } } struct MultiLineText: View { var text: String = "" var alignment: HAlignment = .leading var body: some View { Text(text) .lineLimit(nil) .multilineTextAlignment(alignment) } }
MultiLineText(多行文本)在app中咱們常常會用到,咱們經過struct封裝了一個MultiLineText,能夠方便咱們後期使用。當咱們想讓footnote也支持多行文本時,咱們以前須要經過繼承實現,現在咱們能夠經過組合的方式將代碼進行封裝。swift
UIKit’s core design philosophy is inheritance.
SwiftUI’s is composition.
組合的更多好處,你們能夠在之後開發中慢慢體會。也能夠經過留言和我交流。app
https://medium.com/better-programming/best-practices-in-swiftui-composition-282b02772a24ui