簡體   English   中英

Swift:按下后更改按鈕顏色

[英]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.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM