要在 SwiftUI 中设置按钮样式,根据我的理解,您需要扩展ButtonStyle和实现,func makeBody(configuration: Self.Configuration) -> some View在其中开始configuration.label对Button视图的引用应用修改。
现在,除了label字段之外,ButtonStyle.Configuration还有一个布尔字段 for isPressed,但这似乎就是全部。
如何检查按钮是启用还是禁用?
例如,我想在按钮周围绘制一个边框,如果按钮启用,我希望边框为蓝色,如果禁用,则边框为灰色。
我的第一个猜测是这样的:
func makeBody(configuration: Self.Configuration) -> some View {
configuration.label
.overlay(
RoundedRectangle(cornerRadius: 4).stroke(configuration.isEnabled ? Color.blue : Color.gray, lineWidth: 1).padding(8)
)
}
Run Code Online (Sandbox Code Playgroud)
但是没有isEnabled领域。
Apple 提供的PlainButtonStyle显然可以访问这些信息,因为头文件中的 doc 注释声明它说“样式可以应用视觉效果来指示按钮的按下、聚焦或启用状态”。
/// A `Button` style that does not style or decorate its content while idle.
///
/// The style may apply a visual effect to indicate …Run Code Online (Sandbox Code Playgroud)