如何停止 UIButton 標題更改時的意外動畫?


在 iOS 應用中,您經常需要根據您的需求自定義按鈕。當您向父檢視新增按鈕時,預設情況下按鈕標題會帶有動畫。但是,如果您想停止該預設動畫,您可以使用 UIKit 中的自定義按鈕。

我們首先建立一個可以看到此問題的場景。這是一個基本的設定。

首先,我們將一個註冊按鈕新增到父檢視並進行基本自定義。我們將透過程式設計方式向按鈕新增約束以設定按鈕的位置。

  • 步驟 1 - 建立一個系統型別的按鈕物件

  • 步驟 2 - 使用基本屬性自定義按鈕物件

  • 步驟 3 - 向按鈕新增所需的約束

  • 步驟 4 - 建立自定義型別的按鈕以停止動畫

示例

這是帶有基本設定的程式碼:

import UIKit
class TestController: UIViewController {
   private let registerButton = UIButton(type: .system)
   
   override func viewDidLoad() {
      super.viewDidLoad()
      initialSetup()
   }
 
   private func initialSetup() {
   
      // Basic setup
      view.backgroundColor = .darkGray
      navigationItem.title = "UIButton"
     
      // Customizing the register button
      registerButton.titleLabel?.font = UIFont.systemFont(ofSize: 18, weight: .semibold)
      registerButton.backgroundColor = .black
      registerButton.layer.cornerRadius = 10.0
      registerButton.layer.masksToBounds = true
      registerButton.setTitleColor(.white, for: .normal)
      registerButton.setTitle("Register", for: .normal)
      registerButton.addTarget(self, action: #selector(handleRegisterButtonTapped), for: .touchUpInside)
     
      // Adding the required constraints to the button
      registerButton.translatesAutoresizingMaskIntoConstraints = false
      view.addSubview(registerButton)
      registerButton.widthAnchor.constraint(equalToConstant: 250).isActive = true
      registerButton.heightAnchor.constraint(equalToConstant: 50).isActive = true
      registerButton.centerXAnchor.constraint(equalTo: view.centerXAnchor).isActive = true
      registerButton.centerYAnchor.constraint(equalTo: view.centerYAnchor).isActive = true
   }
   
   @objc private func handleRegisterButtonTapped() {
      print("The register button is tapped.")
   }
}

輸出

執行上述程式碼後,您將看到一個標題為“註冊”的按鈕。此外,當您點選螢幕上的按鈕時,您會看到標題在點選時會顯示動畫。

現在,我們想要透過點選按鈕來停止此動畫。您可以使用以下解決方案來停止它:

private let registerButton = UIButton(type: .custom)

更改按鈕型別是一個非常簡單的解決方案。在此基本設定中,我們將按鈕型別定義為“system”。要停止此動畫,您可以將按鈕型別更改為“custom”,而不是“system”,如上面的程式碼行所示。

現在,如果您在進行上述更改後執行程式碼,您將看到點選按鈕時動畫已停用。

結論

總而言之,預設情況下,當您點選按鈕時,會執行動畫。當您建立系統型別按鈕時,會發生此動畫。要停止此預設動畫,您必須使用“custom”型別而不是“system”型別建立按鈕物件。

更新於:2023年3月27日

680 次瀏覽

啟動您的職業生涯

完成課程獲得認證

開始學習
廣告