在我的项目中,我使用自定义形状作为按钮的标签。现在,我正在尝试创建一个自定义的ButtonStyle
,每当当前按下按钮时,它就会更改自定义形状的颜色。
如果我使用“正常”按钮标签,例如a Text
,我可以这样做:
struct LightGrayButtonStyle: ButtonStyle {
func makeBody(configuration: Self.Configuration) -> some View {
configuration.label
.foregroundColor(configuration.isPressed ? .black : .red)
}
}
但是,configuration.label
没有任何特定于Shape
的视图修改器,因此无法使用.fill
等更改颜色。
这是我的代码的其余部分:
Button {
action()
} label: {
RingSegment() // this is my custom shape
}
.buttonStyle(LightGrayButtonStyle()) // I apply my custom button style
我现在如何更改自定义ButtonStyle
中自定义形状的颜色?或者,我如何使我的自定义形状尊重提供的foregroundColor
,我可以在我的LightGrayButtonStyle
实现的makeBody
方法中设置它?
2条答案
按热度按时间dgenwo3n1#
您可以移动
ButtonStyle
中的所有代码然后你可以传入任何
Shape
和任何Color
。pcrecxhr2#
我的解决方案是在
makeBody
函数中应用foregroundColor
修饰符,并在填充自定义形状时使用该颜色。这是我的代码: