swift UIButton用法详解

2021-06-22  本文已影响0人  JianLee

创建

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)

按钮点击事件

常用的触摸事件类型:

添加按钮点击事件

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 共支持如下几种样式:

上一篇下一篇

猜你喜欢

热点阅读