我真的很想理解一些事情。 我想创建一个带有一些文本的按钮。该按钮有一个框架和一个颜色(颜色与背景相同)。当我点击该按钮时,我希望产生某种效果(整个按钮的某种变色)。如果颜色与背景相同,则在点击期间文本的颜色会有所不同。如果我有一个带有红色背景的按钮,则会对整个按钮产生效果。我附上了一张关于事情应该是什么样子的图片。
点击前按钮应如下所示:
在我的情况下,红色矩形颜色与背景颜色相同。但我想要相同的矩形覆盖。取而代之的是,我获得了以下内容。
点击前:
在点击期间:
在这种情况下,只有数字有某种叠加。但矩形不是。
这里是代码。如果按钮的颜色与背景颜色相同,我应该更改什么以获得相同的反馈?
Button(action: {
some action
}){
Text("1")
.font(.title)
.foregroundColor(.blue)
.frame(width: 80, height: 48)
.background(Color.white)
.cornerRadius(4)
}
最佳答案
我不能说完全理解您想要实现的目标,但是可以在按钮样式的帮助下完成不同的按钮按下视觉反馈。在样式中,我们可以访问 isPressed
状态,因此可以根据该状态有条件地更改按钮的呈现方式。
这是一些应该有帮助的演示
Button(action: {
some action
}){
Text("1")
}
.buttonStyle(MyButtonStyle())
struct MyButtonStyle: ButtonStyle {
func makeBody(configuration: Self.Configuration) -> some View {
configuration.label
.font(.title)
.foregroundColor(configuration.isPressed ? .white : .blue) // << ex. !!
.frame(width: 80, height: 48)
.background(configuration.isPressed ? Color.clear : Color.white) // << ex. !!
.cornerRadius(4)
}
}
关于ios - 点击时 SwiftUI 按钮不灰显,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/65235394/