如何以编程方式创建按钮?


在本文中,您将学习如何在 Swift 语言中以编程方式创建按钮。在 iOS 中,有不同的方法可以以编程方式创建按钮对象。让我们通过示例来探索其中的一些方法。

我们将看到以下创建按钮的方法:

步骤 1 - 在此步骤中,我们将创建一个按钮对象,并在需要时对其进行自定义。

步骤 2 - 在此步骤中,我们将使用 lazy 关键字创建一个按钮对象。

步骤 3 - 在此步骤中,我们将创建一个按钮对象,稍后再设置其框架。

创建按钮并稍后自定义

以下是如何使用 Swift 在 iOS 中以编程方式创建按钮的示例:

示例

import UIKit
class TestController: UIViewController {    
   private let loginButton = UIButton()
   override func viewDidLoad() {
      super.viewDidLoad()
      initialSetup()
   }    
   private func initialSetup() {
      // basic setup
      view.backgroundColor = .white
      navigationItem.title = "UIButton"
        
      // login button customization
      loginButton.setTitle("Login", for: .normal)
      loginButton.setTitleColor(.white, for: .normal)
      loginButton.layer.cornerRadius = 10
      loginButton.layer.masksToBounds = true
      loginButton.backgroundColor = .darkGray
      loginButton.titleLabel?.font = UIFont.systemFont(ofSize: 18, weight: .semibold)
      loginButton.addTarget(self, action: #selector(handleLoginButtonTapped), for: .touchUpInside)
        
      // adding the constraints to login button
      view.addSubview(loginButton)
      loginButton.translatesAutoresizingMaskIntoConstraints = false
      loginButton.centerYAnchor.constraint(equalTo: view.centerYAnchor).isActive = true
      loginButton.centerXAnchor.constraint(equalTo: view.centerXAnchor).isActive = true
      loginButton.heightAnchor.constraint(equalToConstant: 50).isActive = true
      loginButton.widthAnchor.constraint(equalToConstant: 280).isActive = true
   }    
   @objc private func handleLoginButtonTapped() {
      print("login button tapped...")
   }
}

输出

在上述步骤中,在控制器中创建了一个名为 loginButton 的按钮对象。按钮的标题设置为“登录”,标题颜色设置为白色。该按钮还具有目标-动作对,以便当点击按钮时,将调用“handleLoginButtonTapped”函数。最后,该按钮被添加为当前视图的子视图。

您将看到,我们最初创建了一个按钮对象。之后,我们将在 viewDidLoad() 方法中自定义按钮。最后,使用一些必要的约束将其添加到父视图。

使用 lazy 关键字创建按钮

以下是如何使用 UIKit 中的 lazy 关键字在 iOS 中以编程方式创建按钮的示例:

示例

import UIKit
class TestController: UIViewController {   
   private lazy var loginButton: UIButton = {
      let button = UIButton()
      button.setTitle("Login", for: .normal)
      button.setTitleColor(.white, for: .normal)
      button.layer.cornerRadius = 10
      button.layer.masksToBounds = true
      button.backgroundColor = .darkGray
      button.titleLabel?.font = UIFont.systemFont(ofSize: 18, weight: .semibold)
      button.addTarget(self, action: #selector(handleLoginButtonTapped), for: .touchUpInside)
      button.translatesAutoresizingMaskIntoConstraints = false
      return button
   }()    
   override func viewDidLoad() {
      super.viewDidLoad()
      initialSetup()
   }    
   private func initialSetup() {       
      // basic setup
      view.backgroundColor = .white
      navigationItem.title = "UIButton"
        
      // adding the constraints to login button
      view.addSubview(loginButton)
      loginButton.centerYAnchor.constraint(equalTo: view.centerYAnchor).isActive = true
      loginButton.centerXAnchor.constraint(equalTo: view.centerXAnchor).isActive = true
      loginButton.heightAnchor.constraint(equalToConstant: 50).isActive = true
      loginButton.widthAnchor.constraint(equalToConstant: 280).isActive = true
   }    
   @objc private func handleLoginButtonTapped() {
      print("login button tapped...")
   }
}

输出

在上述步骤中,使用 lazy 关键字在控制器中创建了一个名为 loginButton 的按钮对象。按钮的标题设置为“登录”,标题颜色设置为白色。该按钮还具有目标-动作对,以便当点击按钮时,将调用“handleLoginButtonTapped”函数。最后,该按钮被添加为当前视图的子视图。

请注意,使用 lazy 关键字,您无需在按钮声明中将其添加为子视图,您可以在需要时随时添加。

使用框架创建按钮

以下是如何使用 Swift 在 iOS 中以编程方式创建按钮的示例:

示例

import UIKit
class TestController: UIViewController {    
   private let loginButton = UIButton(type: .system)    
   override func viewDidLoad() {
      super.viewDidLoad()
      initialSetup()
   }   
   private func initialSetup() {        
      // basic setup
      view.backgroundColor = .white
      navigationItem.title = "UIButton"
        
      // login button customization
      loginButton.frame = CGRect(x: 20, y: 150, width: 280, height: 50)
      loginButton.setTitle("Login", for: .normal)
      loginButton.setTitleColor(.white, for: .normal)
      loginButton.layer.cornerRadius = 10
      loginButton.layer.masksToBounds = true
      loginButton.backgroundColor = .darkGray
      loginButton.titleLabel?.font = UIFont.systemFont(ofSize: 18, weight: .semibold)
      loginButton.addTarget(self, action: #selector(handleLoginButtonTapped), for: .touchUpInside)
        
      view.addSubview(loginButton)
   }    
   @objc private func handleLoginButtonTapped() {
      print("login button tapped...")
   }
}

输出

您可以根据需要更改 x、y、宽度和高度,也可以根据您的要求更改按钮标题和操作。

结论

您可以通过多种方式以编程方式创建按钮。您可以创建一个按钮对象,并在需要时在代码中对其进行自定义。此外,可以使用 lazy 关键字创建按钮对象。UIButton 类提供了在代码中稍后设置框架的灵活性。您可以在上面的示例中看到如何设置按钮的框架。

使用 lazy 关键字是最推荐的方法。您可以在单个块中创建一个按钮对象并添加任何自定义项。此外,您还可以在同一个块中添加目标。

更新于:2023年2月28日

1K+ 次浏览

启动您的 职业生涯

通过完成课程获得认证

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