需求
近來App中按鈕要做統(tǒng)一話,如圖所示框住部分為可點擊區(qū)域,顯示區(qū)域則為白色圓角框區(qū)域~~

實現(xiàn)思路
根據(jù)上圖表示,實現(xiàn)思路有
自定義控件
自定義控件就可以完美的實現(xiàn)這樣的功能,并且也方面調整,對于新項目來說 是一個最優(yōu)的方案了,但是由于是對app進行優(yōu)化,項目中之前一直使用的是button,改起來工作量繁重,并且都是體力活不經(jīng)濟實惠,對于我這種懶惰的程序員來說,簡直是折磨·· pass-
基于button做修改
2.1 直接使用帶文字的圖片展示。
但是由于app中包含了多種字體,如果要帶文字的圖片則一個按鈕需要多張圖片,這會無止境的增加項目內的圖片,進而會增加項目包大小,非常的不經(jīng)濟·· 血崩··· Pass
2.2 直接對button的titlelabel的layer做處理
事實證明是可以的,但是效果圖如下··

可以看出由于button對titlelabel做的處理,導致邊框緊緊的圍著文字,顯得相當?shù)牟幻烙^,進而Pass
2.3 對button的layer做處理
基于2.2可知,對layer層直接做處理是可行的,只是由于button對titlelabel做的處理,導致titlelabel的frame和文本的高寬一致,不能直接使用其layer處理,但是如果我們得知了titlelabel的frame,直接對此frame進行寬高的增加,中心點不變,來生成一個新的layer放到button上。這樣處理下,圓角邊框僅僅和button的內容相關,則button可以任意設置寬高,進而點擊區(qū)域就不會被button的內容展示限制,簡直完美。
效果展示
紅色為可點擊區(qū)域,雖然在項目中 沒有用到 需要將button的imageview和titlelabel一起框起來的需求,但是在實際實現(xiàn)中,也將其實現(xiàn)進去了。
PS:同時也實現(xiàn)了安卓button自帶的點擊背景色改變效果~ 沒辦法,老大說要和安卓一樣。。我有一句·····

Demo地址
如有問題-聯(lián)系郵箱357863248@qq.com.