使按钮处于非活动状态并更改不透明度

Posted

技术标签:

【中文标题】使按钮处于非活动状态并更改不透明度【英文标题】:Turn buttons inactive and change opacity 【发布时间】:2020-07-04 09:04:36 【问题描述】:

我对 Swift 还很陌生,所以请多多包涵。

screenshot when nothing's tapped

screenshot when one button is tapped

我正在尝试转动其他按钮,这些按钮未被点击、处于非活动状态并将不透明度更改为 0.5。

到目前为止,我已经尝试过使用 $bindings,但这并没有按照我想要的方式工作。

这是我的 SelectionButtons 的代码:

struct SelectionButton: View 

var buttonText = "Selection Button"

var buttonColor = Color.white
var buttonWidth: CGFloat = 150
var active = false


var body: some View 
    
    ZStack 
        
        if active 
            
            RoundedRectangle(cornerRadius: 45)
                .frame(width: buttonWidth, height: 50)
                .foregroundColor(Color("neonGreen"))
                .shadow(color: Color(#colorLiteral(red: 0, green: 0, blue: 0, alpha: 0.25)), radius:9, x:0, y:0)
            
            
            Text(buttonText)
                .font(.system(size: 18))
                .foregroundColor(.black)
                .bold()

            
        else
            RoundedRectangle(cornerRadius: 45)
                .frame(width: buttonWidth, height: 50)
                .foregroundColor(buttonColor)
                .shadow(color: Color(#colorLiteral(red: 0, green: 0, blue: 0, alpha: 0.25)), radius:9, x:0, y:0)
            
            
            Text(buttonText)
                .font(.system(size: 18))
                .foregroundColor(.black)
            
        
        
        
    
    

这就是我使用它们的方式:

@State var gelbesBlatt = false

var body: some View 
    
    NavigationView 
        
        
        
        Button(action: 
            self.gelbesBlatt.toggle()
        , label: SelectionButton(buttonText: "gelb", buttonColor: .white, buttonWidth: 150, active: gelbesBlatt)
        )
    
    
    

谢谢!

如果您知道我可以如何添加组合,以便可以一起选择属于一起的特定按钮(例如“Ganzes Blatt > gelb”和“Ränder > braun”),那就太棒了!

【问题讨论】:

【参考方案1】:

检查一下:

    @State var gelbesBlatt = false
    @State var btnBraun = false
    var body: some View 
        NavigationView 
            HStack 
                Button(action: 
                    self.toggleButton(button: 0)
                , label: SelectionButton(buttonText: "gelb", buttonColor: .white, buttonWidth: 150, active: gelbesBlatt)
                )
                
                Button(action: 
                    self.toggleButton(button: 1)
                , label: SelectionButton(buttonText: "braun", buttonColor: .white, buttonWidth: 150, active: btnBraun)
                )
            
        
    
    func toggleButton(button: Int) 
        if(button == 0) 
        self.gelbesBlatt = true
        self.btnBraun = false
     else 
        self.gelbesBlatt = false
        self.btnBraun = true
    
        self.gelbesBlatt.toggle()
        self.btnBraun.toggle()
    

【讨论】:

以上是关于使按钮处于非活动状态并更改不透明度的主要内容,如果未能解决你的问题,请参考以下文章

如何减少统一的不透明度?

当不透明度为 0% 时从元素中移除点击

更改 react-native-maps 中活动标记的不透明度

Bootstrap 3 的活动按钮

在 SwiftUI 中,如何使手势在容器视图之外处于非活动状态?

滚动条美化