如何停止 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