[英]Swift: Change a button color once pressed
我正在嘗試為我的 iPhone 制作一個基本的應用程序。 我是 Xcode 的新手,我在 google 上瀏覽過,但找不到我要找的東西。 我正在嘗試為我的飛機制作一份清單。
我基本上有一個帶有幾個按鈕的視圖控制器。 我想要的是按鈕一旦按下就從灰色變為藍色,除非再次按下,否則保持藍色。 我根本不了解 Xcode 和 Swift 語言,所以如果有人可以幫忙,請像在向孩子解釋一樣解釋。
到目前為止,我已經設法讓所有頁面設置和滾動工作,但我現在只需要更改按鈕。
提前謝謝你,泰。
這很簡單。
您將首先在 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()
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(red: CGFloat, green: CGFloat, blue: CGFloat, alpha: CGFloat)
替換UIColor.BlueColor()
或UIColor.GrayColor()
。
編輯:如果您只想更改按鈕的文本顏色,只需在所需位置添加此語句或其變體:
button.setTitleColor(UIColor.grayColor(), forState: UIControlState.Selected)
使用 UIButton 類的這個方法
func setTitleColor(_ color: UIColor?,
forState state: UIControlState)
您正在尋找的狀態是 .Selected
當然,您必須自己處理選定狀態,因為切換按鈕不是本機行為。
對於 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) {
if sender.isSelected == true {
sender.backgroundColor = UIColor.uicolorFromHex(0x262D35, alpha: 100)
sender.setTitleColor(UIColor.white, for: .normal)
sender.isSelected = false
} else {
sender.backgroundColor = UIColor.uicolorFromHex(0xF3CD70, alpha: 100)//Choose your colour here
sender.setTitleColor(UIColor.white, for: .normal) //To change button Title colour .. check your button Tint color is clear_color..
sender.isSelected = true
}
}
沒有集合視圖:
//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)
}
}
更新 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)
}
}
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.