我正在尝试将我的iPhone制作一个基本应用程序。我是Xcode的新手,我在google上浏览过,无法找到我正在寻找的内容。我正试图为我的飞机制作一份清单。
我基本上有一个带有几个按钮的View控制器。我想要的是按钮在按下后从灰色变为蓝色并保持蓝色,除非再次按下。我根本不了解Xcode和Swift语言,所以如果有人可以提供帮助,请解释好像你正在向孩子解释。
到目前为止,我已经设法让页面全部设置和滚动工作,但我现在只需要按钮进行更改。
提前谢谢你, TY。
答案 0 :(得分:6)
这很简单。
您首先要在ViewDidLoad()方法中实际设置按钮的背景颜色。在此之前,您应该已经为按钮设置了IBOutlet。在我的例子中,我只是将插座命名为通用"按钮"。
您的IBOutlet将是:
@IBOutlet weak var button:UIButton!
不要忘记将插座连接到按钮上!
接下来,在ViewDidLoad中将按钮的背景图像设置为灰色,如下所示:
override func viewDidLoad() {
super.viewDidLoad()
button.backgroundColor = UIColor.grayColor()
}
这应该为您的按钮提供一般的灰色背景。如果您想要更好地控制实际颜色,可以将button.backgroundColor = UIColor.grayColor()
替换为button.backgroundColor = UIColor(red: CGFloat, green: CGFloat, blue: CGFloat, alpha: CGFloat)
,替换" CGFloat"使用您选择的值。
接下来,更改按钮颜色的实际代码:
进行IBAction并将其连接到按钮。我的名字叫做:
@IBAction func buttonTapped(sender: AnyObject) {}
你的条件是,如果按钮是灰色的,它应该在蓝色时变为蓝色,如果它是蓝色,那么它应该在点击时变为灰色。
因此,在我们刚刚定义的IBAction中,您将添加一个If语句,如下所示:
@IBAction func buttonTapped(sender: AnyObject) {
if button.backgroundColor == UIColor.grayColor() {
button.backgroundColor = UIColor.blueColor()
}
else if button.backgroundColor == UIColor.blueColor() {
button.backgroundColor = UIColor.grayColor()
}
}
if语句的作用是,如果按钮的背景颜色为灰色,则将其设置为蓝色;如果背景颜色为蓝色,则将其设置为灰色。如果您愿意,可以使用更加个性化的UIColor.BlueColor()
替换UIColor.GrayColor()
或UIColor(red: CGFloat, green: CGFloat, blue: CGFloat, alpha: CGFloat)
。
编辑:如果您只想更改按钮的文字颜色,只需在所需位置添加此声明或其变体:
button.setTitleColor(UIColor.grayColor(), forState: UIControlState.Selected)
答案 1 :(得分:4)
使用UIButton类的这种方法
func setTitleColor(_ color: UIColor?,
forState state: UIControlState)
您正在寻找的州是.Selected
当然,您必须自己处理选定状态,因为切换按钮不是本机行为。
答案 2 :(得分:1)
对于Swift 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
}
}
没有CollectionView:
//MARK: - UIButton Action
@IBAction func colorChangingBtn(_ sender: UIButton){
sender.isSelected = !sender.isSelected
if sender.isSelected{
sender.backgroundColor = UIColor.gray
sender.setTitleColor(UIColor.blue, for: .normal)
}
else{
sender.backgroundColor = UIColor.blue
sender.setTitleColor(UIColor.white, for: .normal)
}
}
答案 3 :(得分:0)
更新SWIFT 5
记住,在选择状态时也要调用颜色
@IBAction func yourBtnAction(_ sender: UIButton) {
sender.isSelected = !sender.isSelected
sender.tintColor = .clear
if sender.isSelected{
sender.setTitleColor(.green, for: .selected)
}
else{
sender.setTitleColor(.red, for: .selected)
}
}