从 iOS 15 开始,您可以(并且应该!)Role为每个按钮分配一个,例如:
Button("Delete", role: .destructive) {
deleteSomething()
}
Run Code Online (Sandbox Code Playgroud)
将角色分配给按钮有助于系统为使用该按钮的每个上下文应用正确的样式(例如像这个上下文菜单的示例)
您可以创建修饰符组合来创建所需的样式。
VStack {
Button("Plain", role: .none, action: { })
.buttonStyle(PlainButtonStyle())
Button("Automatic", role: .none, action: { })
.buttonStyle(.automatic)
Button("Log out", role: .cancel, action: { })
.buttonStyle(BorderedButtonStyle())
.tint(.yellow)
// with controlSize
Button("Cancel", role: .cancel, action: { })
.buttonStyle(.borderless)
.controlSize(.small)
.tint(.yellow)
Button("Delete", role: .destructive, action: { })
.buttonStyle(.bordered)
.controlSize(.regular)
// with controlProminence
Button(role: .destructive, action: { }, label: {
Text("Exit").frame(maxWidth: .infinity)
})
.buttonStyle(.bordered)
.controlSize(.large)
.controlProminence(.increased)
//with BorderedShape
Button(role: .destructive, action: { }, label: {
Text("Wow shape").frame(maxWidth: .infinity)
})
.buttonStyle(BorderedButtonStyle(shape: .capsule))
.controlSize(.large)
.controlProminence(.increased)
.tint(.purple)
}
Run Code Online (Sandbox Code Playgroud)
为了Button:
Button("Tap") {
// do something
}
.foregroundColor(.red)
Run Code Online (Sandbox Code Playgroud)
为了Alert:
Alert(
title: Text("Hi"),
message: Text("Do it?"),
primaryButton: .cancel(Text("Cancel")),
secondaryButton: .destructive(Text("Delete")) {
// do something
}
)
Run Code Online (Sandbox Code Playgroud)
同样对于ActionSheet.
| 归档时间: |
|
| 查看次数: |
1638 次 |
| 最近记录: |