如何停止 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”型別建立按鈕物件。
廣告
資料結構
網路
關係資料庫管理系統 (RDBMS)
作業系統
Java
iOS
HTML
CSS
Android
Python
C語言程式設計
C++
C#
MongoDB
MySQL
Javascript
PHP