swift中UIButton的简单使用

UIButton是我们经常用的一个控件,它是继承自UIControl的,下面就总结一下相关属性及用法:

1.UIButton的创建

a.不带样式的:

        let btn: UIButton = UIButton()

b.带样式的

        let btns:UIButton =UIButton(type: UIButtonType);

其中UIButtonType是一个枚举如下所示:

    public enum ButtonType : Int, @unchecked Sendable {

        
        case custom = 0

        @available(iOS 7.0, *)
        case system = 1

        
        case detailDisclosure = 2

        case infoLight = 3

        case infoDark = 4

        case contactAdd = 5

        
        @available(iOS 13.0, *)
        case close = 7

        
        public static var roundedRect: UIButton.ButtonType { get }
    }

用法如下:

let  btn: UIButton = UIButton(type: .Custom)

2.UIButton设置字内容和颜色

        btn.setTitle("按钮", forState: .Normal)

        btn.setTitleColor(UIColor.white, forState: .Normal)

3.UIButton设置背景颜色和背景图片

        btn.backgroundColor =UIColor.black

        btn.setBackgroundImage(UIImage(named:"1"), forState: .Normal)

4.UIButton设置字体大小

        btn.titleLabel?.font =UIFont.systemFontOfSize(20)

5.禁用UIButton

         btn.enabled =false   //禁止按钮,默认为true

6.设置圆角

        btn.layer.cornerRadius = 8

7.设置背景图片为圆角(因为我们直接设置UIButton圆角时,图片不会变为圆角)

        buttonImage.setImage(UIImage(named:"1") , forState: UIControlState.Normal)

        //设置背景图片为圆角

        buttonImage.imageView?.layer.cornerRadius = 50

8.在UIButton上添加图片和文字,有时需要我们调整,此时需要:

        方向为逆时针方向,上、左、下、右依次去设置的

        btn.imageEdgeInsets =UIEdgeInsetsMake(top: CGFloat, left: CGFloat, bottom: CGFloat, right: CGFloat)

        btn.titleEdgeInsets =UIEdgeInsetsMake(top: CGFloat, left: CGFloat, bottom: CGFloat, right: CGFloat)

例子如下:

        //创建一个图片一个文字的按钮
        let btn2: UIButton = UIButton(type: .Custom)
        btn2.frame = CGRectMake(50, 100, 120, 35)
        btn2.setImage(UIImage(named: "1"), forState: .Normal)
        btn2.backgroundColor = UIColor.black
        btn2.titleLabel?.font = UIFont.systemFontOfSize(20)
        btn2.imageView?.contentMode = UIViewContentMode.ScaleAspectFit
        btn2.setTitle("图片按钮", forState: .Normal)
        //偏移量,分别为上下左右
        btn2.imageEdgeInsets = UIEdgeInsetsMake(0, -50, 0, 0)
        btn2.titleEdgeInsets = UIEdgeInsetsMake(0, -80, 0, 5)
        btn2.setTitleColor(UIColor.white, forState: .Normal)
        btn2.adjustsImageWhenHighlighted = false
        self.view.addSubview(btn2)

9.添加按钮的点击事件

        第一种是不带参数的,第二种是带参数的

 //不带参数
 testButton.addTarget(self, action: #selector(clickEvent), for: .touchUpInside)
 //带参数
 testButton.addTarget(self, action: #selector(clickEvent(_:)), for: .touchUpInside)

方式实现

  //不带参数
  @objc func clickEvent() {
       //实现代码
  }

  //携带参数
  @objc func clickEvent(_ sender: UIButton) {
        //实现代码
    }

写的代码如下:

func initButtonView() {
        //创建有状态的按钮
        let btn: UIButton = UIButton(type: .Custom)
        btn.frame = CGRectMake(50, 20, 100, 30)
        btn.setTitle("点击按钮", forState: .Selected)
        btn.setTitle("未点击", forState: .Normal)
        btn.backgroundColor = UIColor.black
        btn.addTarget(self, action: #selector(clickBtn(_:), forControlEvents: .TouchUpInside)
        self.view .addSubview(btn)
        
        //创建无状态的按钮
        let btn1: UIButton = UIButton()
        btn1.frame = CGRectMake(50, 60, 100, 30)
        btn1.setTitle("Normal", forState: .Normal)
        btn1.backgroundColor = UIColor.blue
        self.view.addSubview(btn1)
        
        //创建一个图片一个文字的按钮
        let btn2: UIButton = UIButton(type: .Custom)
        btn2.frame = CGRectMake(50, 100, 120, 35)
        btn2.setImage(UIImage(named: "1"), forState: .Normal)
        btn2.backgroundColor = UIColor.blackColor()
        btn2.titleLabel?.font = UIFont.systemFontOfSize(20)
        btn2.imageView?.contentMode = UIViewContentMode.ScaleAspectFit
        btn2.setTitle("图片按钮", forState: .Normal)
        //偏移量,分别为上下左右
        btn2.imageEdgeInsets = UIEdgeInsetsMake(0, -50, 0, 0)
        btn2.titleEdgeInsets = UIEdgeInsetsMake(0, -80, 0, 5)
        btn2.setTitleColor(UIColor.white, forState: .Normal)
        btn2.adjustsImageWhenHighlighted = false
        self.view.addSubview(btn2)
        
        //创建禁止按钮
        let btn3: UIButton = UIButton(type: .Custom)
        btn3.frame = CGRectMake(50, 140, 100, 35)
        btn3.setTitle("点击按钮", forState: .Highlighted)
        btn3.setTitle("禁止按钮", forState: .Normal)
        btn3.enabled = false    //禁止按钮,默认为true
        btn3.setTitleColor(UIColor.red, forState: .Disabled)
        btn3.backgroundColor = UIColor.purple
        self.view.addSubview(btn3)
        
        //创建圆角按钮
        let btn4: UIButton = UIButton(type: .Custom)
        btn4.frame = CGRectMake(50, 180, 100, 35)
        btn4.backgroundColor = UIColor.black
        btn4.setTitle("圆角按钮 ", forState: .Normal)
        btn4.setTitleColor(UIColor.white, forState: .Normal)
        btn4.layer.cornerRadius = 8
        self.view.addSubview(btn4)
        
        //部分圆角按钮,主要利用layer的mask属性,在tongguoCAShaperLayer和UIBezierPath来画
        let btn5: UIButton = UIButton(type: .Custom)
        btn5.frame = CGRectMake(50, 220, 100, 35)
        btn5.backgroundColor = UIColor.black
        btn5.setTitle("部分圆角按钮", forState: .Normal)
        btn5.setTitleColor(UIColor.white, forState: .Normal)
        let shape: CAShapeLayer = CAShapeLayer()
        let bepath: UIBezierPath = UIBezierPath(roundedRect: btn5.bounds, byRoundingCorners: [UIRectCorner.TopRight,UIRectCorner.TopLeft,UIRectCorner.BottomLeft], cornerRadii: CGSize(width: 8, height: 8))
        UIColor.black.setStroke()
        shape.path = bepath.CGPath
        btn5.layer.mask = shape
        self.view.addSubview(btn5)
        
        //创建带边框的按钮
        let btn6: UIButton = UIButton(type: .Custom)
        btn6.frame = CGRectMake(50, 260, 100, 35)
        btn6.setTitle("边框按钮", forState: .Normal)
        btn6.setTitleColor(UIColor.black, forState: .Normal)
        btn6.layer.borderColor = UIColor.black.CGColor
        btn6.layer.borderWidth = 1
        btn6.layer.cornerRadius = 8
        self.view.addSubview(btn6)
        
        //显示提示信息的UILabel
        labelText = UILabel()
        labelText.frame = CGRectMake(50, 300, 100, 44)
        labelText.textColor = UIColor.orange
        self.view.addSubview(labelText)
        
        let btns: UIButton = UIButton(type: .Custom)
        btns.frame = CGRectMake(<#T##x: CGFloat##CGFloat#>, <#T##y: CGFloat##CGFloat#>, <#T##width: CGFloat##CGFloat#>, <#T##height: CGFloat##CGFloat#>)
        btn.setTitle("按钮", forState: .Normal)
        btn.setTitleColor(UIColor.white, forState: .Normal)
        btn.backgroundColor = UIColor.black
        btn.setBackgroundImage(UIImage(named: "1"), forState: .Normal)
        btn.imageEdgeInsets = UIEdgeInsetsMake(<#T##top: CGFloat##CGFloat#>, <#T##left: CGFloat##CGFloat#>, <#T##bottom: CGFloat##CGFloat#>, <#T##right: CGFloat##CGFloat#>)
        btn.titleEdgeInsets = UIEdgeInsetsMake(<#T##top: CGFloat##CGFloat#>, <#T##left: CGFloat##CGFloat#>, <#T##bottom: CGFloat##CGFloat#>, <#T##right: CGFloat##CGFloat#>)
        
        btn.addTarget(self, action: #selector(clickEvent), forControlEvents: .TouchUpInside)
    }
    
    @objc func clickBtn(_ sender: UIButton){
        
        sender.selected = !sender.selected
        labelText.text = "点击了按钮"
    }


效果图如下:

  • 0
    点赞
  • 8
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
好的,下面是一个简易的注册界面的 Swift 5 代码: ```swift import UIKit class RegisterViewController: UIViewController { let emailTextField: UITextField = { let textField = UITextField() textField.placeholder = "邮箱" textField.borderStyle = .roundedRect textField.translatesAutoresizingMaskIntoConstraints = false return textField }() let passwordTextField: UITextField = { let textField = UITextField() textField.placeholder = "密码" textField.borderStyle = .roundedRect textField.isSecureTextEntry = true textField.translatesAutoresizingMaskIntoConstraints = false return textField }() let registerButton: UIButton = { let button = UIButton(type: .system) button.setTitle("注册", for: .normal) button.addTarget(self, action: #selector(registerButtonTapped), for: .touchUpInside) button.translatesAutoresizingMaskIntoConstraints = false return button }() override func viewDidLoad() { super.viewDidLoad() view.backgroundColor = .white navigationItem.title = "注册" view.addSubview(emailTextField) view.addSubview(passwordTextField) view.addSubview(registerButton) NSLayoutConstraint.activate([ emailTextField.centerXAnchor.constraint(equalTo: view.centerXAnchor), emailTextField.topAnchor.constraint(equalTo: view.safeAreaLayoutGuide.topAnchor, constant: 50), emailTextField.widthAnchor.constraint(equalToConstant: 300), passwordTextField.centerXAnchor.constraint(equalTo: view.centerXAnchor), passwordTextField.topAnchor.constraint(equalTo: emailTextField.bottomAnchor, constant: 20), passwordTextField.widthAnchor.constraint(equalToConstant: 300), registerButton.centerXAnchor.constraint(equalTo: view.centerXAnchor), registerButton.topAnchor.constraint(equalTo: passwordTextField.bottomAnchor, constant: 50), registerButton.widthAnchor.constraint(equalToConstant: 200), registerButton.heightAnchor.constraint(equalToConstant: 50) ]) } @objc func registerButtonTapped() { guard let email = emailTextField.text, !email.isEmpty, let password = passwordTextField.text, !password.isEmpty else { // 如果邮箱或密码为空,弹出提示框 let alert = UIAlertController(title: "错误", message: "请输入邮箱和密码", preferredStyle: .alert) alert.addAction(UIAlertAction(title: "好的", style: .default, handler: nil)) present(alert, animated: true, completion: nil) return } // 注册逻辑 } } ``` 这个简易的注册界面只包括了一个邮箱输入框、一个密码输入框和一个注册按钮。在视图加载时,我们添加了这些视图并使用了自动布局约束来布局它们。 当用户点击注册按钮时,`registerButtonTapped` 方法将会被调用。在这个方法,我们首先检查邮箱和密码是否为空,如果为空则弹出一个提示框。如果邮箱和密码都不为空,你可以在这个方法添加你自己的注册逻辑。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值