在Swift 5.0 版本下,总结基础视图UIButton
首先创建一个按钮,初始值任意设定:
importUIKit
class ViewController: UIViewController {
override func viewDidLoad() {
super.viewDidLoad()
// MARK: - 声明一个按钮与类型
letbutton:UIButton=UIButton(type: .system)
// MARK: - 设定按钮的坐标值与大小
button.frame=CGRect(x:100, y:100, width:100, height:100)
// MARK: - 添加按钮文字内容
button.setTitle("按钮文字", for: .normal)
// MARK: - 按钮背景颜色更变
button.titleLabel?.backgroundColor = .black
// MARK: - 添加按钮边框和颜色
button.layer.borderWidth=10
button.layer.borderColor = UIColor.black.cgColor
// MARK: - 添加视图
self.view.addSubview(button)
// MARK: - 背景颜色为系统绿色
self.view.backgroundColor = .systemGreen
}
}

按钮样式:
UIButton(type: .custom)
按钮没有图片,仅有白色文字,黑色边框为按钮大小,点击时无效果

UIButton(type: .system)
按钮没有图片,仅有系统原定的蓝色文字,点击时有效果


UIButton(type: .contactAdd)
按钮自带加号图标,所有内容颜色为系统原定蓝色,点击有效果


UIButton(type: .close)
按钮自带一个叉号和圆形阴影,点击阴影等于点击按钮,实际按钮范围大于阴影范围,点击时有效果




UIButton(type: .detailDisclosure),UIButton(type: .infoDark),UIButton(type: .infoLight)
三者效果相同,原型I图标加文字,皆为系统默认蓝色,点击有效果


按钮坐标与大小
button.frame=CGRect(x:int, y:int, width:int, height:int)
x:横坐标,y:纵坐标,width:宽度,height:高度
一 按钮文字与效果
button.setTitle(String, for: UIControl.State)
string:文本,按钮的文字内容,若设置的文字内容长度超过了按钮的显示范围,则会省略文本的中端,显示XXX...XXX的样子,具体的指令会对此情况进行约束,详见二;
UIControl.State:状态,表示在不同的状态下显示的效果.有以下几种
.normal:正常状态下效果 ; .highlighted 点击时瞬间的效果(一直按住按钮时的效果); .disabled: 按钮禁用时效果; .selected 按钮被选中时候的效果
注意:禁用模式命令如下
button.isEnabled = Bool
二 设置按钮文本的显示
注意:使用以下命令时,按钮样式必须为定制,即为.custom,其他样式无效.
button.titleLabel?.lineBreakMode = .byTruncatingHead\Middle\Tail
根据末尾字节的不同,分别表示 前略后详 例如: ...XXXXX ; 中略前后详细 例:XXX....XXX; 后略前详 例:xxx.......
.byClipping:效果类似.byTruncatingTail,但是后部显示不出部分不会用省略号代替 例XXXXXXXXX
.byWordWrapping 和 .byCharWrapping 两者皆为自动换行,但是前者会将一个词语保证在一行,后者不会;
例 AABBCCDDEE 前者会 AABB换行CCDDEE 后者会 AABBC 换行CDDEE
当选择以上两个指令时,可以通过在字符串添加 \n 来达成换行 例AA\nBB等于AA换行BB
三 设置文本背景色与设置按键的背景色
button.titleLabel?.backgroundColor = UIColor
表示设置按钮文本的背景色

button.backgroundColor = UIColor
表示设置整个按钮有效区域的背景色

助记:titleLabel跟文本有关系,一般仅仅修改文本而不是影响整个button的设定要在titleLabel下操作
四 设置文本颜色
button.setTitleColor(UIColor?, for:UIControl.State)
UIColor:文本的色彩
UIControl.State:状态,其内容与要求,与一中所述的状态效果一致,表示在具体的状态下显示的颜色
五 设置文本字符
button.titleLabel?.font=UIFont.systemFont(ofSize:CGFloat)
CGFloat:填写需要的int字号即可
六 设置阴影
button.setTitleShadowColor(UIColor?, for:UIControl.State)
UIColor:阴影的色彩
UIControl.State:状态,其内容与要求,与一中所述的状态效果一致,表示在具体的状态下显示的颜色
注意:必须要先设定阴影值才能出现效果
button.titleLabel?.shadowOffset = CGSize(width:int, height:int)
七 设置按钮的图片
button.setImage(UIImage(named:String), for: UIControl.State)
若是图片加文字的按钮,图片会在文字左边显示

button.adjustsImageWhenDisabled = Bool
禁用模式下,图片不会变暗
button.adjustsImageWhenHighlighted = Bool
点击时图片不会变暗(当一直按住按钮的时候)
注意: 当状态是.system的状态下时,图片可能会变成系统原设定的颜色,当是.custom时,图片为本色


注意:当按钮文字状态需要.system时,而图片又想使用其本色时
let xxx = UIImage(named:String)?.withRenderingMode(.alwaysOriginal)

设置按钮的整个背景图片时
button.setBackgroundImage(UIImage(named:"String"), for: UIControl.State)
八 按钮的锐角值 边框厚度 与 边框颜色等设定
通过layer来设定按钮的锐角与边框等属性
锐角值设定:
当一个正方形按钮,锐角值为边长的一般是,则为圆形
button.layer.cornerRadius = int
设定按钮边框的厚度
button.layer.borderWidth = int
设定边框的颜色
button.layer.borderColor = UIColor.black.cgColor
masksToBounds指视图的图层上的子图层,如果超出父图层的部分就截取掉
button.layer.masksToBounds = false

button.layer.masksToBounds = true

九 按钮图片和文本的位置调动
调动按钮的图片位置
button.imageEdgeInsets=UIEdgeInsetsMake(top:CGFloat,left:CGFloat,bottom:CGFloat,right:CGFloat)
调动按钮的文本位置
button.titleEdgeInsets=UIEdgeInsetsMake(top:CGFloat,left:CGFloat,bottom:CGFloat,right:CGFloat)
十 按钮的点击事件
importUIKit
class ViewController: UIViewController {
override func viewDidLoad() {
super.viewDidLoad()
// MARK: - 声明一个按钮与类型
letbutton:UIButton=UIButton(type: .system)
// MARK: - 设定按钮的坐标值与大小
button.frame=CGRect(x:100, y:100, width:200, height:200)
// MARK: - 添加按钮文字内容
button.setTitle("按钮文字", for: .normal)
// MARK: - 添加视图
self.view.addSubview(button)
// MARK: - 背景颜色为系统绿色
self.view.backgroundColor = .systemGreen
button.addTarget(self, action:#selector(dianji), for: .touchUpInside)
}
@objc func dianji(){
print("dianji")
}
}
网络上能查到常用的触摸事件类型:
touchDown:单点触摸按下事件,点触屏幕
touchDownRepeat:多点触摸按下事件,点触计数大于1,按下第2、3或第4根手指的时候
touchDragInside:触摸在控件内拖动时
touchDragOutside:触摸在控件外拖动时
touchDragEnter:触摸从控件之外拖动到内部时
touchDragExit:触摸从控件内部拖动到外部时
touchUpInside:在控件之内触摸并抬起事件
touchUpOutside:在控件之外触摸抬起事件
touchCancel:触摸取消事件,即一次触摸因为放上太多手指而被取消,或者电话打断