Swift 5.0 UIButton 2021-03-28

在Swift 5.0 版本下,總結(jié)基礎(chǔ)視圖UIButton


首先創(chuàng)建一個(gè)按鈕,初始值任意設(shè)定:

importUIKit

class ViewController: UIViewController {

? ? override func viewDidLoad() {

? ? ? ? super.viewDidLoad()

? ? ? ? // MARK: - 聲明一個(gè)按鈕與類(lèi)型

? ? ? ? letbutton:UIButton=UIButton(type: .system)

? ? ? ? // MARK: - 設(shè)定按鈕的坐標(biāo)值與大小

? ? ? ? button.frame=CGRect(x:100, y:100, width:100, height:100)

? ? ? ? // MARK: - 添加按鈕文字內(nèi)容

? ? ? ? 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: - 背景顏色為系統(tǒng)綠色

? ? ? ? self.view.backgroundColor = .systemGreen

? ? }

}


運(yùn)行效果

按鈕樣式:

UIButton(type: .custom) ??

按鈕沒(méi)有圖片,僅有白色文字,黑色邊框?yàn)榘粹o大小,點(diǎn)擊時(shí)無(wú)效果


普通狀態(tài)和點(diǎn)擊狀態(tài)效果一致

UIButton(type: .system) ?

按鈕沒(méi)有圖片,僅有系統(tǒng)原定的藍(lán)色文字,點(diǎn)擊時(shí)有效果


普通狀態(tài)


點(diǎn)擊時(shí)狀態(tài)

UIButton(type: .contactAdd)?

按鈕自帶加號(hào)圖標(biāo),所有內(nèi)容顏色為系統(tǒng)原定藍(lán)色,點(diǎn)擊有效果


普通狀態(tài)
點(diǎn)擊時(shí)狀態(tài)

UIButton(type: .close) ?

按鈕自帶一個(gè)叉號(hào)和圓形陰影,點(diǎn)擊陰影等于點(diǎn)擊按鈕,實(shí)際按鈕范圍大于陰影范圍,點(diǎn)擊時(shí)有效果

普通狀態(tài)
點(diǎn)擊時(shí)狀態(tài)


給按鈕邊緣增加顏色后的狀態(tài)
增加邊框后點(diǎn)擊時(shí)的狀態(tài)

UIButton(type: .detailDisclosure),UIButton(type: .infoDark),UIButton(type: .infoLight)

三者效果相同,原型I圖標(biāo)加文字,皆為系統(tǒng)默認(rèn)藍(lán)色,點(diǎn)擊有效果


普通狀態(tài)
點(diǎn)擊時(shí)狀態(tài)



按鈕坐標(biāo)與大小

button.frame=CGRect(x:int, y:int, width:int, height:int)

x:橫坐標(biāo),y:縱坐標(biāo),width:寬度,height:高度



一 ? ? ?按鈕文字與效果

button.setTitle(String, for: UIControl.State)

string:文本,按鈕的文字內(nèi)容,若設(shè)置的文字內(nèi)容長(zhǎng)度超過(guò)了按鈕的顯示范圍,則會(huì)省略文本的中端,顯示XXX...XXX的樣子,具體的指令會(huì)對(duì)此情況進(jìn)行約束,詳見(jiàn)二;

?UIControl.State:狀態(tài),表示在不同的狀態(tài)下顯示的效果.有以下幾種

.normal:正常狀態(tài)下效果 ; .highlighted 點(diǎn)擊時(shí)瞬間的效果(一直按住按鈕時(shí)的效果); ?.disabled: 按鈕禁用時(shí)效果; .selected 按鈕被選中時(shí)候的效果

注意:禁用模式命令如下

button.isEnabled = Bool

二 ?設(shè)置按鈕文本的顯示

注意:使用以下命令時(shí),按鈕樣式必須為定制,即為.custom,其他樣式無(wú)效.

button.titleLabel?.lineBreakMode = .byTruncatingHead\Middle\Tail? ?

根據(jù)末尾字節(jié)的不同,分別表示 前略后詳 例如: ?...XXXXX ; 中略前后詳細(xì) 例:XXX....XXX; 后略前詳 例:xxx.......?

.byClipping:效果類(lèi)似.byTruncatingTail,但是后部顯示不出部分不會(huì)用省略號(hào)代替? ? ?例XXXXXXXXX

.byWordWrapping 和 .byCharWrapping 兩者皆為自動(dòng)換行,但是前者會(huì)將一個(gè)詞語(yǔ)保證在一行,后者不會(huì);

例 AABBCCDDEE 前者會(huì) AABB換行CCDDEE 后者會(huì) AABBC 換行CDDEE

當(dāng)選擇以上兩個(gè)指令時(shí),可以通過(guò)在字符串添加 ??\n ? 來(lái)達(dá)成換行 ?例AA\nBB等于AA換行BB?

三 ? ?設(shè)置文本背景色與設(shè)置按鍵的背景色

button.titleLabel?.backgroundColor = UIColor?

表示設(shè)置按鈕文本的背景色


button.backgroundColor = UIColor ?

表示設(shè)置整個(gè)按鈕有效區(qū)域的背景色


助記:titleLabel跟文本有關(guān)系,一般僅僅修改文本而不是影響整個(gè)button的設(shè)定要在titleLabel下操作

四 ? 設(shè)置文本顏色

button.setTitleColor(UIColor?, for:UIControl.State)

UIColor:文本的色彩

UIControl.State:狀態(tài),其內(nèi)容與要求,與一中所述的狀態(tài)效果一致,表示在具體的狀態(tài)下顯示的顏色

五?設(shè)置文本字符

button.titleLabel?.font=UIFont.systemFont(ofSize:CGFloat)

CGFloat:填寫(xiě)需要的int字號(hào)即可

?六 設(shè)置陰影

button.setTitleShadowColor(UIColor?, for:UIControl.State)

UIColor:陰影的色彩

UIControl.State:狀態(tài),其內(nèi)容與要求,與一中所述的狀態(tài)效果一致,表示在具體的狀態(tài)下顯示的顏色

注意:必須要先設(shè)定陰影值才能出現(xiàn)效果

button.titleLabel?.shadowOffset = CGSize(width:int, height:int)

七 ?設(shè)置按鈕的圖片

button.setImage(UIImage(named:String), for: UIControl.State)

若是圖片加文字的按鈕,圖片會(huì)在文字左邊顯示


圖片在左,文字在右

button.adjustsImageWhenDisabled = Bool

禁用模式下,圖片不會(huì)變暗

button.adjustsImageWhenHighlighted = Bool

點(diǎn)擊時(shí)圖片不會(huì)變暗(當(dāng)一直按住按鈕的時(shí)候)

注意: 當(dāng)狀態(tài)是.system的狀態(tài)下時(shí),圖片可能會(huì)變成系統(tǒng)原設(shè)定的顏色,當(dāng)是.custom時(shí),圖片為本色


.custom時(shí)
.system時(shí)

注意:當(dāng)按鈕文字狀態(tài)需要.system時(shí),而圖片又想使用其本色時(shí)

let?xxx = UIImage(named:String)?.withRenderingMode(.alwaysOriginal)


圖片本色在.system的狀態(tài)下

設(shè)置按鈕的整個(gè)背景圖片時(shí)

button.setBackgroundImage(UIImage(named:"String"), for: UIControl.State)


八 ?按鈕的銳角值 邊框厚度 與 邊框顏色等設(shè)定

通過(guò)layer來(lái)設(shè)定按鈕的銳角與邊框等屬性

銳角值設(shè)定:

當(dāng)一個(gè)正方形按鈕,銳角值為邊長(zhǎng)的一般是,則為圓形

button.layer.cornerRadius = int

設(shè)定按鈕邊框的厚度

button.layer.borderWidth = int

設(shè)定邊框的顏色

button.layer.borderColor = UIColor.black.cgColor

masksToBounds指視圖的圖層上的子圖層,如果超出父圖層的部分就截取掉

?button.layer.masksToBounds = false


button.layer.masksToBounds = true


九 ?按鈕圖片和文本的位置調(diào)動(dòng)

調(diào)動(dòng)按鈕的圖片位置

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

調(diào)動(dòng)按鈕的文本位置

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

十 ? ?按鈕的點(diǎn)擊事件

importUIKit

class ViewController: UIViewController {

? ? override func viewDidLoad() {

? ? ? ? super.viewDidLoad()

? ? ? ? // MARK: - 聲明一個(gè)按鈕與類(lèi)型

? ? ? ? letbutton:UIButton=UIButton(type: .system)

? ? ? ? // MARK: - 設(shè)定按鈕的坐標(biāo)值與大小

? ? ? ? button.frame=CGRect(x:100, y:100, width:200, height:200)

? ? ? ? // MARK: - 添加按鈕文字內(nèi)容

? ? ? ? button.setTitle("按鈕文字", for: .normal)

? ? ? ? // MARK: - 添加視圖

? ? ? ? self.view.addSubview(button)

? ? ? ? // MARK: - 背景顏色為系統(tǒng)綠色

? ? ? ? self.view.backgroundColor = .systemGreen

? ? ? ? button.addTarget(self, action:#selector(dianji), for: .touchUpInside)

? ? }

? ? @objc?func?dianji(){

? ? ? ? print("dianji")

? ? }

}

網(wǎng)絡(luò)上能查到常用的觸摸事件類(lèi)型:

touchDown:?jiǎn)吸c(diǎn)觸摸按下事件酌摇,點(diǎn)觸屏幕

touchDownRepeat:多點(diǎn)觸摸按下事件,點(diǎn)觸計(jì)數(shù)大于1,按下第2朽缴、3或第4根手指的時(shí)候

touchDragInside:觸摸在控件內(nèi)拖動(dòng)時(shí)

touchDragOutside:觸摸在控件外拖動(dòng)時(shí)

touchDragEnter:觸摸從控件之外拖動(dòng)到內(nèi)部時(shí)

touchDragExit:觸摸從控件內(nèi)部拖動(dòng)到外部時(shí)

touchUpInside:在控件之內(nèi)觸摸并抬起事件

touchUpOutside:在控件之外觸摸抬起事件

touchCancel:觸摸取消事件沟涨,即一次觸摸因?yàn)榉派咸嗍种付蝗∠福蛘唠娫挻驍?/p>

?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請(qǐng)聯(lián)系作者
  • 序言:七十年代末机杜,一起剝皮案震驚了整個(gè)濱河市饼疙,隨后出現(xiàn)的幾起案子迅细,更是在濱河造成了極大的恐慌巫橄,老刑警劉巖,帶你破解...
    沈念sama閱讀 218,546評(píng)論 6 507
  • 序言:濱河連續(xù)發(fā)生了三起死亡事件茵典,死亡現(xiàn)場(chǎng)離奇詭異湘换,居然都是意外死亡,警方通過(guò)查閱死者的電腦和手機(jī)统阿,發(fā)現(xiàn)死者居然都...
    沈念sama閱讀 93,224評(píng)論 3 395
  • 文/潘曉璐 我一進(jìn)店門(mén)彩倚,熙熙樓的掌柜王于貴愁眉苦臉地迎上來(lái),“玉大人扶平,你說(shuō)我怎么就攤上這事帆离。” “怎么了结澄?”我有些...
    開(kāi)封第一講書(shū)人閱讀 164,911評(píng)論 0 354
  • 文/不壞的土叔 我叫張陵哥谷,是天一觀的道長(zhǎng)岸夯。 經(jīng)常有香客問(wèn)我,道長(zhǎng)们妥,這世上最難降的妖魔是什么猜扮? 我笑而不...
    開(kāi)封第一講書(shū)人閱讀 58,737評(píng)論 1 294
  • 正文 為了忘掉前任,我火速辦了婚禮王悍,結(jié)果婚禮上破镰,老公的妹妹穿的比我還像新娘。我一直安慰自己压储,他們只是感情好鲜漩,可當(dāng)我...
    茶點(diǎn)故事閱讀 67,753評(píng)論 6 392
  • 文/花漫 我一把揭開(kāi)白布。 她就那樣靜靜地躺著集惋,像睡著了一般孕似。 火紅的嫁衣襯著肌膚如雪。 梳的紋絲不亂的頭發(fā)上刮刑,一...
    開(kāi)封第一講書(shū)人閱讀 51,598評(píng)論 1 305
  • 那天喉祭,我揣著相機(jī)與錄音,去河邊找鬼雷绢。 笑死泛烙,一個(gè)胖子當(dāng)著我的面吹牛,可吹牛的內(nèi)容都是我干的翘紊。 我是一名探鬼主播蔽氨,決...
    沈念sama閱讀 40,338評(píng)論 3 418
  • 文/蒼蘭香墨 我猛地睜開(kāi)眼,長(zhǎng)吁一口氣:“原來(lái)是場(chǎng)噩夢(mèng)啊……” “哼帆疟!你這毒婦竟也來(lái)了鹉究?” 一聲冷哼從身側(cè)響起,我...
    開(kāi)封第一講書(shū)人閱讀 39,249評(píng)論 0 276
  • 序言:老撾萬(wàn)榮一對(duì)情侶失蹤踪宠,失蹤者是張志新(化名)和其女友劉穎自赔,沒(méi)想到半個(gè)月后,有當(dāng)?shù)厝嗽跇?shù)林里發(fā)現(xiàn)了一具尸體柳琢,經(jīng)...
    沈念sama閱讀 45,696評(píng)論 1 314
  • 正文 獨(dú)居荒郊野嶺守林人離奇死亡绍妨,尸身上長(zhǎng)有42處帶血的膿包…… 初始之章·張勛 以下內(nèi)容為張勛視角 年9月15日...
    茶點(diǎn)故事閱讀 37,888評(píng)論 3 336
  • 正文 我和宋清朗相戀三年,在試婚紗的時(shí)候發(fā)現(xiàn)自己被綠了柬脸。 大學(xué)時(shí)的朋友給我發(fā)了我未婚夫和他白月光在一起吃飯的照片痘绎。...
    茶點(diǎn)故事閱讀 40,013評(píng)論 1 348
  • 序言:一個(gè)原本活蹦亂跳的男人離奇死亡,死狀恐怖肖粮,靈堂內(nèi)的尸體忽然破棺而出孤页,到底是詐尸還是另有隱情,我是刑警寧澤涩馆,帶...
    沈念sama閱讀 35,731評(píng)論 5 346
  • 正文 年R本政府宣布行施,位于F島的核電站允坚,受9級(jí)特大地震影響,放射性物質(zhì)發(fā)生泄漏蛾号。R本人自食惡果不足惜稠项,卻給世界環(huán)境...
    茶點(diǎn)故事閱讀 41,348評(píng)論 3 330
  • 文/蒙蒙 一、第九天 我趴在偏房一處隱蔽的房頂上張望鲜结。 院中可真熱鬧展运,春花似錦、人聲如沸精刷。這莊子的主人今日做“春日...
    開(kāi)封第一講書(shū)人閱讀 31,929評(píng)論 0 22
  • 文/蒼蘭香墨 我抬頭看了看天上的太陽(yáng)怒允。三九已至埂软,卻和暖如春,著一層夾襖步出監(jiān)牢的瞬間纫事,已是汗流浹背勘畔。 一陣腳步聲響...
    開(kāi)封第一講書(shū)人閱讀 33,048評(píng)論 1 270
  • 我被黑心中介騙來(lái)泰國(guó)打工, 沒(méi)想到剛下飛機(jī)就差點(diǎn)兒被人妖公主榨干…… 1. 我叫王不留丽惶,地道東北人炫七。 一個(gè)月前我還...
    沈念sama閱讀 48,203評(píng)論 3 370
  • 正文 我出身青樓,卻偏偏與公主長(zhǎng)得像钾唬,于是被迫代替她去往敵國(guó)和親诉字。 傳聞我的和親對(duì)象是個(gè)殘疾皇子,可洞房花燭夜當(dāng)晚...
    茶點(diǎn)故事閱讀 44,960評(píng)論 2 355

推薦閱讀更多精彩內(nèi)容