美文网首页
SwiftUI-自定义修饰符

SwiftUI-自定义修饰符

作者: rayChow | 来源:发表于2021-07-17 11:29 被阅读0次

    SwiftUI为我们提供了内置的修饰符,如一系列的font(),background()和clipShape()。但是,我们也可以创建执行特定操作的自定义修饰符。
    例如,我们自定义一个项目中常用的文本,设置其字体大小、字重、颜色、背景色等。创建自定义修饰符需要遵循ViewModifier协议,实现其body方法

    定义:
    struct Title: ViewModifier {
        func body(content: Content) -> some View {
            content
                .font(.largeTitle)
                .foregroundColor(.white)
                .padding()
                .background(Color.blue)
                .clipShape(RoundedRectangle(cornerRadius: 10))
        }
    }
    
    使用:
    Text("Hello World")
        .modifier(Title())
    

    为了更便捷的使用,我们可以将实现的自定义修饰符扩展为View的方法,便于调用

    extension View {
        func titleStyle() -> some View {
            self.modifier(Title())
        }
    }
    
    我们现在可以像这样使用修饰符:
    Text("Hello World")
        .titleStyle()
    

    one more thing:自定义修饰符不仅可以应用其他现有修饰符,还可以根据需要创建新的视图结构。请记住的是,修饰符返回新对象而不是修改现有对象,因此我们可以创建一个将视图嵌入堆栈并添加另一个视图的对象。

    自定义一个水印修饰符:
    struct Watermark: ViewModifier {
        var text: String
    
        func body(content: Content) -> some View {
            ZStack(alignment: .bottomTrailing) {
                content
                Text(text)
                    .font(.caption)
                    .foregroundColor(.white)
                    .padding(5)
                    .background(Color.black)
            }
        }
    }
    
    extension View {
        func watermarked(with text: String) -> some View {
            self.modifier(Watermark(text: text))
        }
    }
    

    相关文章

      网友评论

          本文标题:SwiftUI-自定义修饰符

          本文链接:https://www.haomeiwen.com/subject/hjybpltx.html