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也支持多行文本时,我们之前需要通过继承实现,如今我们可以通过组合的方式将代码进行封装。
UIKit’s core design philosophy is inheritance.
SwiftUI’s is composition.
组合的更多好处,大家可以在以后开发中慢慢体会。也可以通过留言和我交流。
参考文件
https://medium.com/better-programming/best-practices-in-swiftui-composition-282b02772a24
更多SwiftUI教程和代码关注专栏
- 请关注我的专栏icloudend, SwiftUI教程与源码
**粗体** _斜体_ [链接](http://example.com) `代码` - 列表 > 引用
。你还可以使用@
来通知其他用户。