可以这样设置按钮样式吗...?
Button() { }
.buttonStyle(.default)
Run Code Online (Sandbox Code Playgroud)
而不是这个...?
Button() { }
.buttonStyle(DefaultButtonStyle())
Run Code Online (Sandbox Code Playgroud)
我尝试编写扩展代码,但它不起作用。
extension ButtonStyle {
static var `default`: DefaultButtonStyle {
DefaultButtonStyle()
}
}
Run Code Online (Sandbox Code Playgroud)
它说:Static member 'default' cannot be used on protocol metatype 'ButtonStyle.Protocol'
小智 8
另一个解决方案:
extension ButtonStyle where Self == BorderlessButtonStyle {
internal static var borderless: BorderlessButtonStyle {
BorderlessButtonStyle()
}
}
Run Code Online (Sandbox Code Playgroud)
用法:
Button("Demo") {}
.buttonStyle(.borderless)
Run Code Online (Sandbox Code Playgroud)
这是可能方法的演示 - 使用自己的修饰符和自己的枚举,因此可以完全控制一切。
用法
Button("Demo") {}
.myStyle(.default)
Run Code Online (Sandbox Code Playgroud)
和辅助扩展
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
}
}
}
Run Code Online (Sandbox Code Playgroud)
归档时间: |
|
查看次数: |
2218 次 |
最近记录: |