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

启动您的职业生涯

完成课程获得认证

开始学习
广告
© . All rights reserved.