ios - 点击时 SwiftUI 按钮不灰显

标签 ios button swiftui background-color

我真的很想理解一些事情。 我想创建一个带有一些文本的按钮。该按钮有一个框架和一个颜色(颜色与背景相同)。当我点击该按钮时,我希望产生某种效果(整个按钮的某种变色)。如果颜色与背景相同,则在点击期间文本的颜色会有所不同。如果我有一个带有红色背景的按钮,则会对整个按钮产生效果。我附上了一张关于事情应该是什么样子的图片。

点击前按钮应如下所示:

enter image description here

当用户按下按钮(不松开)时,按钮如下所示: enter image description here

在我的情况下,红色矩形颜色与背景颜色相同。但我想要相同的矩形覆盖。取而代之的是,我获得了以下内容。

点击前:

enter image description here

在点击期间:

enter image description here

在这种情况下,只有数字有某种叠加。但矩形不是。

这里是代码。如果按钮的颜色与背景颜色相同,我应该更改什么以获得相同的反馈?

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/

相关文章:

ios - 在 Swift ios 中从 SQlite 的 TableView 单元格中重复检索数据三次

Selenium 使用按钮类型和按钮标签而不是文件上传文件

SwiftUI Negative Padding Z 顺序

ios - Unresolved 标识符 NavigationButton 错误

ios - 如何判断Plot已经被Core-Plot渲染过

ios - Collection View 单元格内容自动布局

ios - Swift:imageWithData 不可用

android - GridView Adapter.getView() 未正确设置选定状态

ios - Sprite-Kit 中的按钮按下动画

ios - 如何修改 SwiftUI 预览的 UIView 属性?