使用自定义 ButtonStyle 破坏了accessibilityShowButtonShapes 覆盖

问题描述 投票:0回答:1

我使用自定义 ButtonStyle 来更改按下状态下按钮的颜色

Button(action: action) {
    bodyView
}
.buttonStyle(ListCellButtonStyle())

private struct ListCellButtonStyle: ButtonStyle {

    func makeBody(configuration: Configuration) -> some View {
        configuration.label
            .overlay(
                Rectangle()
                    .foregroundColor(configuration.isPressed ? .statePressed : .clear)
            )
    }
}

但这会删除在辅助功能模式下显示按钮形状的默认行为:

Settings > Accessibility > Display & Text Size -> Button Shapes -> true

如何获取DefaultButtonStyle的代码来复制这个相关人员,或者如何不创建新的ButtonStyle,而是修改DefaultButtonStyle?

ios swift swiftui accessibility
1个回答
0
投票

当您创建自己的按钮样式时,可以使用辅助功能环境变量使您的样式响应用户更改。

对于按钮形状设置,环境属性是

\.accessibilityShowButtonShapes
,因此您可以相应地调整您的样式。例如,如果您有一个形状,当需要显示按钮形状时,您希望其背景可见,您可以使用该变量来调整其不透明度:

private struct ListCellButtonStyle: ButtonStyle {
    @Environment(\.accessibilityShowButtonShapes) private var accessibilityShowButtonShapes

    func makeBody(configuration: Configuration) -> some View {
       // some view
       .background {
         Color.gray.opacity(accessibilityShowButtonShapes ? 0.2 : 0.0)
       }
    }
}
© www.soinside.com 2019 - 2024. All rights reserved.