UIButton-如何正確的設(shè)置背景圖片

UIButton作為最常用的控件之一,今天卻在設(shè)置背景圖片時倒騰了好久,現(xiàn)將此坑記錄如下。

創(chuàng)建

xib:直接拖
code:UIButton* button = [UIButton buttonWithType:UIButtonTypeCustom];

注意:xib中直接拖進去的button默認為UIButtonTypeSystem,該類型默認會對button做些一些定制化工作(包括字體,顏色等),如果我們在該類型的基礎(chǔ)上對button做自定義背景圖片,會產(chǎn)生錯誤的效果。對于我們最常用的按鈕,通常設(shè)定為UIButtonTypeCustom

背景圖片

設(shè)置常態(tài)下的背景圖片 [self.button setBackgroundImage:[UIImage imageNamed:@"green_btn_normal"] forState:UIControlStateNormal]; 設(shè)置按下狀態(tài)的背景圖片 [self.button setBackgroundImage:[UIImage imageNamed:@"green_btn_selected"] forState:UIControlStateHighlighted];

注意:按下狀態(tài)時,state的值是UIControlStateHighlighted,而不是selected,只有這樣設(shè)置,才能讓你的按鈕顯示出正確的顏色

實例解析

制作demo,需求如下:

  • 創(chuàng)建2個按鈕
  • SystemTypeOriginal為storyboard中直接拖上去的button,type保持system不變,設(shè)置green_btn_normal.png為normal狀態(tài)的背景圖片,設(shè)置green_btn_selected.png為highlighted狀態(tài)的背景圖片
  • CustomTypeOriginal為storyboard中直接拖上去的button,type設(shè)置為Custom,設(shè)置green_btn_normal.png為normal狀態(tài)的背景圖片,設(shè)置green_btn_selected.png為highlighted狀態(tài)的背景圖片

運行demo,效果圖如下:

Paste_Image.png

通過上圖分析可知:

  • SystemType下字體默認為15,且字體顏色為藍色
  • CustomType下字體默認為18,字體顏色為白色
  • 普通狀態(tài)下的按鈕背景圖片與預期相符,green_btn_normal表示的是原始圖片的顏色,此時原始圖片顏色與按鈕背景顏色一致

此時,按下SystemTypeOriginal,效果圖如下:

按下SystemTypeOriginal

上圖的按下效果變得非常詭異,與預期的green_btn_selected顏色相差甚遠,這就是上面說的,在systemtype下,設(shè)置背景圖片會產(chǎn)生錯誤的效果,所以常用的按鈕都會設(shè)置為Customtype。
那么,我們按下CustomTypeOriginal,看下效果圖:

按下CustomTypeOriginal

現(xiàn)在按下的背景圖片就對了!

為什么要設(shè)置highlighted而不是selected

因為button在按下時,狀態(tài)是highlighted,而不是selected,所以設(shè)置selected是沒有作用的。

最后編輯于
?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請聯(lián)系作者
平臺聲明:文章內(nèi)容(如有圖片或視頻亦包括在內(nèi))由作者上傳并發(fā)布,文章內(nèi)容僅代表作者本人觀點,簡書系信息發(fā)布平臺,僅提供信息存儲服務(wù)。

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