如何停止 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”型別建立按鈕物件。
廣告