2015-07-12 238 views
4

我正在尝试制作一个基本的应用程序我的iPhone。我对Xcode完全陌生,并且在Google上有一个浏览器,并且找不到我正在寻找的内容。我正在为我的飞机做一个清单。Swift:改变按钮颜色一次按下

我基本上有一个视图控制器上有几个按钮。而我想要的是按钮一旦按下就从灰色变成蓝色,除非再次按下,否则保持蓝色。我完全不知道Xcode和Swift语言,所以如果有人可以帮忙解释一下,就好像你在向一个孩子解释。

到目前为止,我已经设法让所有的页面设置和滚动工作,但我只需要按钮来改变现在。

谢谢你, Ty。

回答

4

使用的UIButton类的这个方法

func setTitleColor(_ color: UIColor?, 
      forState state: UIControlState) 

你正在寻找的状态.Selected

当然,你必须自己处理选中状态的切换按钮是不是原生的行为。

4

这很简单。

您将首先在ViewDidLoad()方法中实际设置按钮的背景色。在此之前,您应该已经为该按钮设置了IBOutlet。在我的例子中,我只想给出口命名一个通用的“按钮”。

你IBOutlet中应该是:

@IBOutlet weak var button:UIButton! 

不要忘了出口挂钩的按钮,以及!

接下来,设置按钮的背景图像中的viewDidLoad灰色,像这样:

override func viewDidLoad() { 
    super.viewDidLoad() 

    button.backgroundColor = UIColor.grayColor() 
} 

这应该给你的按钮,一个通用的灰色背景。如果您想更好地控制实际颜色,可以用button.backgroundColor = UIColor(red: CGFloat, green: CGFloat, blue: CGFloat, alpha: CGFloat)代替button.backgroundColor = UIColor.grayColor(),用您选择的值替换“CGFloat”。

接下来,实际的代码更改按钮颜色:

做一个IBAction为,并将其连接到按钮。矿被称为:

@IBAction func buttonTapped(sender: AnyObject) {} 

你的条件是,如果按钮是灰色的,它应该成为龙头蓝色,如果它是蓝色的,那么它应该变成灰色自来水。如果这是什么语句也就是如果按钮的背景颜色是灰色的,它将它所

@IBAction func buttonTapped(sender: AnyObject) { 
    if button.backgroundColor == UIColor.grayColor() { 
     button.backgroundColor = UIColor.blueColor() 
    } 
    else if button.backgroundColor == UIColor.blueColor() { 
     button.backgroundColor = UIColor.grayColor() 
    } 
} 

所以,我们刚刚定义的IBAction为中,您将添加一个IF语句,像这样蓝色,或者如果背景颜色是蓝色,则将其设置为灰色。如果需要,您可以更换UIColor.BlueColor()UIColor.GrayColor(),使用更个性化的UIColor(red: CGFloat, green: CGFloat, blue: CGFloat, alpha: CGFloat)

编辑:如果你只是想改变按钮的文本颜色,只需添加本声明或它在所需位置的变化:

button.setTitleColor(UIColor.grayColor(), forState: UIControlState.Selected) 
0

对于斯威夫特3:

// for change background color of a selected button in a collection view 
func collectionView(_ collectionView: UICollectionView, cellForItemAt indexPath: IndexPath) -> UICollectionViewCell { 
    let collectionCell = collectionView.dequeueReusableCell(withReuseIdentifier: "Cell", for: indexPath) 
    collectionCell.button.addTarget(self, action: #selector(button_Select(_:)), for: .touchUpInside) // add target for action 

    return collectionCell 
} 

@objc func button_Select(_ sender: UIButton) { 
    let button = sender 

    if button.isSelected == true { 
     button.backgroundColor = UIColor.uicolorFromHex(0x262D35, alpha: 100) 
     button.setTitleColor(UIColor.white, for: .normal) 
     button.isSelected = false 
    } else { 
     button.backgroundColor = UIColor.uicolorFromHex(0xF3CD70, alpha: 100)//Choose your colour here 
     button.setTitleColor(UIColor.white, for: .normal) //To change button Title colour .. check your button Tint color is clear_color.. 
     button.isSelected = true 
    } 
}