如何解决这种类型的SwiftUI附加函数模式称为什么,如何制作自己的?
在SwiftUI中,Elements及其属性可以被“附加”,就像这样:
Text("Hello World")
.font(.body)
.frame(maxWidth: 300,alignment: .leading)
.padding(EdgeInsets(top: 0,leading: 0,bottom: 5,trailing: 0))
现在我想创建自己的,而不是写
.background(Rectangle().foregroundColor(Color.green))
每次我都可以将其放入名为coloredDebugBackground()
的函数中,然后将其“附加”到我要着色的每个元素上,就像这样
Text("Hello World")
.coloredDebugBackground()
我很确定那里有一些资料,但是我不知道这种类型/样式/系统叫什么!
解决方法
通常,这称为生成器模式。这里描述得很好:https://www.swiftbysundell.com/articles/using-the-builder-pattern-in-swift/
,嗯...是的,魔术词ViewModifier
,但是实际上这里没有魔术-所有这些示例只是View
的函数/方法,它们在被调用时会产生新的视图。 ViewModifier
协议在大量(或活动)修改的情况下非常有用,但是在您的简单静态修改情况下,有一个更简单的解决方案...
只需在View上直接扩展并将所需的调用包装在一个函数中即可
extension View {
func coloredDebugBackground() -> some View {
self.background(Rectangle().foregroundColor(Color.green))
}
}
版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。