github.com/jixiang0903/swift-ButtonDemo
override func viewDidLoad() {
super.viewDidLoad()
//? ? ? ? UIButtonType.system:前面不帶圖標(biāo),默認(rèn)文字顏色為藍(lán)色,有觸摸時的高亮效果
//? ? ? ? UIButtonType.custom:定制按鈕,前面不帶圖標(biāo)夜郁,默認(rèn)文字顏色為白色劣光,無觸摸時的高亮效果
//? ? ? ? UIButtonType.contactAdd:前面帶“+”圖標(biāo)按鈕脏答,默認(rèn)文字顏色為藍(lán)色尖淘,有觸摸時的高亮效果
//? ? ? ? UIButtonType.detailDisclosure:前面帶“!”圖標(biāo)按鈕萍摊,默認(rèn)文字顏色為藍(lán)色当凡,有觸摸時的高亮效果
//? ? ? ? UIButtonType.infoDark:為感嘆號“!”圓形按鈕
//? ? ? ? UIButtonType.infoLight:為感嘆號“!”圓形按鈕
//創(chuàng)建一個ContactAdd類型的按鈕
let addBtn:UIButton = UIButton(type:.custom)
//設(shè)置按鈕位置和大小
addBtn.frame = CGRect(x:10, y:50, width:150, height:50)
//設(shè)置按鈕文字
addBtn.setTitle("按鈕", for: .normal)
self.view .addSubview(addBtn)
//圓角
addBtn.layer.cornerRadius = 10
addBtn.layer.masksToBounds = true
//對于Custom定制類型按鈕掌动,代碼可簡化為:
//let addBtn = UIButton(frame:CGRect(x:10, y:50, width:100, height:30))
//按鈕的文字設(shè)置
addBtn.setTitle("普通狀態(tài)", for: .normal)//普通狀態(tài)下文字
addBtn.setTitle("點(diǎn)擊狀態(tài)", for: .highlighted)//觸摸狀態(tài)下
addBtn.setTitle("禁用狀態(tài)", for: .disabled)//禁用狀態(tài)
//? ? ? ? addBtn.isEnabled = false
//按鈕文字顏色的設(shè)置
addBtn.setTitleColor(UIColor.black, for: .normal)//普通狀態(tài)下文字顏色
addBtn.setTitleColor(UIColor.green, for: .highlighted)//觸摸狀態(tài)下文字的顏色
addBtn.setTitleColor(UIColor.red, for: .disabled)////禁用狀態(tài)下文字的顏色
//按鈕文字陰影顏色的設(shè)置
addBtn.setTitleShadowColor(UIColor.green, for: .normal)//普通狀態(tài)下文字陰影的顏色
addBtn.setTitleShadowColor(UIColor.red, for: .highlighted)//觸摸狀態(tài)下文字陰影的顏色
addBtn.setTitleShadowColor(UIColor.gray, for:.disabled) //禁用狀態(tài)下文字陰影的顏色
addBtn.titleLabel?.shadowOffset = CGSize(width: -1, height: 1)
//按鈕文字的字體和大小設(shè)置
addBtn.titleLabel?.font = UIFont.systemFont(ofSize: 17)
//按鈕背景顏色設(shè)置
//addBtn.backgroundColor = UIColor.cyan
//按鈕文字圖標(biāo)的設(shè)置
//(1)默認(rèn)情況下按鈕會被渲染成單一顏色
//addBtn.setImage(UIImage(named:"返回"), for: .normal)
addBtn.adjustsImageWhenHighlighted = false//使觸摸模式下按鈕也不會變暗(半透明)
addBtn.adjustsImageWhenDisabled = false//使禁用模式下按鈕也不會變暗(半透明)
//(2)也可以設(shè)置成保留圖標(biāo)原來的顏色
//let iconimg = UIImage(named:"group@2x")?.withRenderingMode(.alwaysOriginal)
//addBtn.setImage(iconimg, for: .normal)
addBtn.adjustsImageWhenHighlighted = false //使觸摸模式下按鈕也不會變暗(半透明)
addBtn.adjustsImageWhenDisabled = false //使禁用模式下按鈕也不會變暗(半透明)
//設(shè)置按鈕背景圖片
addBtn.setBackgroundImage(UIImage(named:"group2@3x"), for: .normal)
//按鈕觸摸點(diǎn)擊事件響應(yīng)
//? ? ? ? 常用的觸摸事件類型:
//? ? ? ? touchDown:單點(diǎn)觸摸按下事件,點(diǎn)觸屏幕
//? ? ? ? touchDownRepeat:多點(diǎn)觸摸按下事件宁玫,點(diǎn)觸計數(shù)大于1粗恢,按下第2、3或第4根手指的時候
//? ? ? ? touchDragInside:觸摸在控件內(nèi)拖動時
//? ? ? ? touchDragOutside:觸摸在控件外拖動時
//? ? ? ? touchDragEnter:觸摸從控件之外拖動到內(nèi)部時
//? ? ? ? touchDragExit:觸摸從控件內(nèi)部拖動到外部時
//? ? ? ? touchUpInside:在控件之內(nèi)觸摸并抬起事件
//? ? ? ? touchUpOutside:在控件之外觸摸抬起事件
//? ? ? ? touchCancel:觸摸取消事件欧瘪,即一次觸摸因為放上太多手指而被取消眷射,或者電話打斷
//不傳遞觸摸對象(即點(diǎn)擊的按鈕)
addBtn.addTarget(self, action:#selector(tapped), for:.touchUpInside)
//傳遞觸摸對象(即點(diǎn)擊的按鈕),需要在定義action參數(shù)時佛掖,方法名稱后面帶上冒號
//addBtn.addTarget(self, action:#selector(tapped(_:)), for:.touchUpInside)
//按鈕文字太長時的處理方法
//默認(rèn)情況下妖碉,如果按鈕文字太長超過按鈕尺寸,則會省略中間的文字,比如下面代碼:
let button1 = UIButton(frame:CGRect(x:20, y:150, width:130, height:50))
button1.setTitle("這個是一段 very 長的文字", for: .normal)
button1.setTitleColor(UIColor.white, for: .normal)
button1.backgroundColor = UIColor.orange
self.view.addSubview(button1)
//我們通過修改 button 按鈕中 titleLabel 的 lineBreakMode 屬性芥被,便可以調(diào)整按鈕在文字超長的情況下如何顯示欧宜,以及是否換行。
//省略尾部文字
button1.titleLabel?.lineBreakMode = .byWordWrapping
//.byTruncatingHead:省略頭部文字拴魄,省略部分用...代替
//.byTruncatingMiddle:省略中間部分文字冗茸,省略部分用...代替(默認(rèn))
//.byTruncatingTail:省略尾部文字,省略部分用...代替
//.byClipping:直接將多余的部分截斷
//.byWordWrapping:自動換行(按詞拆分)
//.byCharWrapping:自動換行(按字符拆分)
//注意:當(dāng)設(shè)置自動換行后(byWordWrapping 或 byCharWrapping)匹中,我們可以在設(shè)置 title 時通過 \n 進(jìn)行手動換行夏漱。
button1.setTitle("歡迎訪問\baidu.com", for: .normal)
}
func tapped(){
print("tapped")
}
//? ? func tapped(_ button:UIButton){
//? ? ? ? print("133424254")
//? ? }