SwiftUI中按钮样式的枚举
可以这样设置按钮样式SwiftUI中按钮样式的枚举,swift,swiftui,Swift,Swiftui,可以这样设置按钮样式 Button() { } .buttonStyle(.default) 而不是这个 Button() { } .buttonStyle(DefaultButtonStyle()) 我试图编写一个扩展,但它不起作用 extension ButtonStyle { static var `default`: DefaultButtonStyle { DefaultButtonStyle() } } 它说:静态成员'default
Button() { }
.buttonStyle(.default)
而不是这个
Button() { }
.buttonStyle(DefaultButtonStyle())
我试图编写一个扩展,但它不起作用
extension ButtonStyle {
static var `default`: DefaultButtonStyle {
DefaultButtonStyle()
}
}
它说:
静态成员'default'不能用于协议元类型'ButtonStyle.protocol'
这里是一个可能方法的演示-使用自己的修饰符和自己的枚举,所以对一切都有完全的控制权
用法
和助手扩展
enum MyButtonStyle {
case `default`
case borderless
// .. extend with any custom here
}
extension Button {
@ViewBuilder
func myStyle(_ style: MyButtonStyle) -> some View {
switch style {
case .default:
self.buttonStyle(DefaultButtonStyle())
case .borderless:
self.buttonStyle(BorderlessButtonStyle())
// .. extend with any custom here
}
}
}
我已经回答你了。
按钮样式
是通用协议(它有关联的类型)-您不能这样做。我可以问一下-你想在这里做什么当没有提供.buttonStyle
时,默认情况下它已经是默认值。default
就是一个例子。最好是有一个.link、.rounded、.bordered、.borderless样式,而不在自动完成中搜索。
enum MyButtonStyle {
case `default`
case borderless
// .. extend with any custom here
}
extension Button {
@ViewBuilder
func myStyle(_ style: MyButtonStyle) -> some View {
switch style {
case .default:
self.buttonStyle(DefaultButtonStyle())
case .borderless:
self.buttonStyle(BorderlessButtonStyle())
// .. extend with any custom here
}
}
}