美文网首页
swift UIButton用法详解

swift UIButton用法详解

作者: JianLee | 来源:发表于2021-06-22 17:28 被阅读0次

    创建

    let button=UIButton()
    button.frame=CGRect(x: 95, y: 180, width: 200, height: 40)
    view.addSubview(button)
    

    设置背景颜色

    button.backgroundColor=UIColor.yellow
    

    设置圆角边框

    button.layer.borderColor=UIColor.red.cgColor
    button.layer.borderWidth=5
    button.layer.cornerRadius=10
    

    设置不同按钮状态显示

    button.setTitle("普通状态", for: .normal)//设置按钮显示的文字
    button.setTitle("触摸状态", for: .highlighted)
    button.setTitle("禁用状态", for: .disabled)
    button.setTitleColor(UIColor.red, for: .normal)
    button.setTitleColor(UIColor.blue, for: .highlighted)
    button.setTitleColor(UIColor.gray, for: .disabled)
    button.setTitleShadowColor(UIColor.green, for:.normal) //普通状态下文字阴影的颜色
    button.setTitleShadowColor(UIColor.yellow, for:.highlighted) //普通状态下文字阴影的颜色
    button.setTitleShadowColor(UIColor.gray, for:.disabled) //普通状态下文字阴影的颜色
    

    设置按钮状态不可用

    sender.isEnabled=false
    

    设置文本字体

    button.titleLabel?.font = UIFont.systemFont(ofSize: 23)//设置字体
    button.titleLabel?.font = UIFont.init(name: "HelveticaNeue-Bold", size: 23)//使用其它字体
    

    设置文本图标

    let button=UIButton(type: UIButton.ButtonType.contactAdd)
    //或者
    button.setImage(UIImage(named:"alarm"), for: .normal)
    

    修改图标文本间距

    button.imageEdgeInsets=UIEdgeInsets.init(top: 0, left: -10, bottom: 0, right: 0)
    button.titleEdgeInsets = UIEdgeInsets(top: 0, left: 10, bottom: 0, right: 0)
    

    设置按钮背景图片

    button.setBackgroundImage(UIImage(named:"bgImg"), for: .normal)
    

    按钮点击事件

    常用的触摸事件类型:

    • touchDown:单点触摸按下事件,点触屏幕
    • touchDownRepeat:多点触摸按下事件,点触计数大于1,按下第2、3或第4根手指的时候
    • touchDragInside:触摸在控件内拖动时
    • touchDragOutside:触摸在控件外拖动时
    • touchDragEnter:触摸从控件之外拖动到内部时
    • touchDragExit:触摸从控件内部拖动到外部时
    • touchUpInside:在控件之内触摸并抬起事件(常用点击事件)
    • touchUpOutside:在控件之外触摸抬起事件
    • touchCancel:触摸取消事件,即一次触摸因为放上太多手指而被取消,或者电话打断

    添加按钮点击事件

    • 不传递点击对象
    button.addTarget(self, action: #selector(btnClick), for: .touchUpInside)
        @objc func btnClick(){
            print("没有传递触摸对象")
        }
    
    • 传递点击对象
    button.addTarget(self, action: #selector(btnClick(_:)), for: UIControl.Event.touchUpInside)
        @objc func btnClick(_ sender:UIButton){  
        print("点击按钮")
        }
    
    • 传递参数给相关方法
    button.addTarget(self, action: #selector(btnClick(_:)), for: UIControl.Event.touchUpInside)
    button.tag = 100
        @objc func btnClick(_ sender:UIButton){  
           let tag = sender.tag
           print("传递的tag:\(tag)")
    }
    

    按钮文字太长处理方式

    我们可以通过修改按钮中 titleLabel 的 lineBreakMode 属性,便可以调整按钮在文字超长的情况下如何显示,以及是否换行。
    lineBreakMode 共支持如下几种样式:

    • byTruncatingHead:省略头部文字,省略部分用...代替
    • byTruncatingMiddle:省略中间部分文字,省略部分用...代替(默认)
    • byTruncatingTail:省略尾部文字,省略部分用...代替
    • byClipping:直接将多余的部分截断
    • byWordWrapping:自动换行(按词拆分)
    • byCharWrapping:自动换行(按字符拆分)
      注意:当设置自动换行后(byWordWrapping 或 byCharWrapping),我们可以在设置 title 时通过 \n 进行手动换行。

    相关文章

      网友评论

          本文标题:swift UIButton用法详解

          本文链接:https://www.haomeiwen.com/subject/lclmyltx.html