Swift-技巧(六)設置按鈕狀態並更改


摘要

按鈕是一個寶藏控件,可以在設置的時候就對不同的狀態添加圖片、文本,甚至更改背景。在不同的展示場景中更改到不同的狀態顯示就好。恰恰是如何更改狀態着實讓我懵了一陣,所以記錄一下過程。如果沒有興趣了解過程,可以直接滑到底部,截圖表格收藏。

之前在處理一個按鈕控件,按鈕有可以點擊和禁止點擊兩個不同的狀態,因為這兩種狀態有不同的圖標,所以就想用 setImage(, for: ) 函數處理:

let btn = UIButton()
btn.setImage(UIImage(named: "pic1"), for: .normal)
btn.setImage(UIImage(named: "pic2"), for: .disabled)

設置完按鈕控件后,剩下的處理就是在需要顯示不同的狀態的地方設置它的狀態,剛好按鈕有 state 屬性,那么當歡欣鼓舞的設置 btn.state = .disabled 時,就一臉懵:

state-error

報的編譯錯誤:說 state 屬性只可以讀,不可以寫,不死心的我追進去看一下源碼:

var state: UIControl.State { get }

到這里徹底懵了,我要更改按鈕狀態為 .disabled 還不行了?

凡事就怕聯想啊,我突然想到之前設置 按鈕的狀態為 .selected之后,就通過更改 .isSelectedtrue 或者 false 來達到按鈕更改狀態效果,那就聯想一下看,有沒有 .disabled

state-error2

這.......總不能可以設置,不能更改吧,要是這樣,開放這屬性就是為了玩嗎?不能死心,這條路走不通,換條路,看看 .disabled 的源碼去。

state-error3

原來,竟然,出我意料。竟然用 isEnabled 來更改狀態。既然到這個地方,那就順手把按鈕的狀態和更改給總結一下:

UIControl.state How change? 狀態解釋
normal 以下屬性 Bool 值為都 false 默認狀態,啟用但是沒有被選中或者被高亮狀態
highlighted isHighlighted 高亮
disabled isEnabled 禁用
selected isSelected 選中
focused 未知 聚焦
application 未知 控件的附加應用標識
reserved 未知 框架內部預留標識

至此,給按鈕設置什么狀態,怎么更改狀態就直接參考上面的表吧。這些個未知情況,看后面有沒有機緣發現了。

題外話

時間倉促,說的東西可能不全面,在你查看的過程中遇到什么問題,評論區給我留言,我會盡快回復


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM