SwiftUI ViewModifier vs ViewBuilder

https://vinsol.com/blog/2020/07/02/understanding-swiftuis-viewmodifiers-and-viewbuilders/ 

摘要:

ViewModifier:
  1. 大多數 SwiftUI 的 View function 都是 View Modifier。Ex: font(), foregroundColor()
  2. view Modifier 是 SwiftUI 中最常用來 modify View 的方式,用來產生客製化 Custom container View
  3. Example:
    struct MyViewModifier: ViewModifier {
        private let ctaThemeColor = Color.blue
        func body(content: Content) -> some View {
            content
                .foregroundColor(.white)
                .padding()
                .background(ctaThemeColor)
                .clipShape(Capsule())
        }
    }
    使用:
    Text("Hello World") .modifier(MyViewModifier()) 
 ViewBuilder: 
  1. 一直需要重複使用到的Base View,創造一個自己的 View Container,類似 VStack(), HStack()
  2.  Example:
    struct MyContainerView<Content: View>: View {
        let content: Content
        init(@ViewBuilder content: () -> Content) {
            self.content = content()
        }
    var body: some View {
            ZStack {
                Color.yellow.edgesIgnoringSafeArea(.all)
                HStack {
                    Spacer()
                    VStack {
                        Text("DemoApp")
                            .foregroundColor(.purple)
                            .font(.system(size: 15, weight: .bold))
                            .padding(.trailing, 15)
                        Spacer()
                    }
                }
                content
            }
        }
    }
     使用:
    struct DemoAppView: View {
        var body: some View {
            MyContainerView {
                Text("I ❤️ SwiftUI") // The main content
            }
        }
    }

留言

這個網誌中的熱門文章

[吉他譜]小酒窩

[吉他譜]可惜你不在

[軍旅]八二大隊+士官訓(一)