考虑 SwiftUI 中的以下扩展:
extension Text{
func applyBG() -> some View {
self
.padding(20)
.background(Color(hue: 0, saturation: 0, brightness: 0.22).cornerRadius(10))
.foregroundColor(.white)
}
}
extension TextField{
func applyBG() -> some View {
self
.padding(20)
.background(Color(hue: 0, saturation: 0, brightness: 0.22).cornerRadius(10))
.foregroundColor(.white)
}
}
我觉得我可以写得更好,避免重复。我可能可以通过以下方式解决这个问题:
extension View{
func applyBG() -> some View {
self
.padding(20)
.background(Color(hue: 0, saturation: 0, brightness: 0.22).cornerRadius(10))
.foregroundColor(.white)
}
}
但我不希望我所有的观点都能够调用这个方法。我只希望 Text 和 Textfield 有这样的方法。我尝试使用协议和关联类型,但我无法一次编写这些行以实现干净的代码。关于我如何实现 DRY 的任何提示或伪代码?