宣告
uibutton是乙個標準的uicontrol控制項,所以如果你對uicontrol不甚了解還是先看一下我的另一篇博文:《uicontrol ios控制項程式設計》
一、建立
兩種方法:
1. 常規的 initwithframe
uibutton *btn1 = [[uibutton alloc]initwithframe:cgrectmake(10, 10, 80, 44)];對**建立view(uicontrol繼承自uiview,所以也是view)不甚了解的請參看:
《有關view的幾個基礎知識點》
2. uibutton 的乙個類方法(也可以說是靜態方法)buttonwithtype
uibutton *btn2 = [uibutton buttonwithtype:uibuttontyperoundedrect];
風格有如下
typedef enum uibuttontype; 二、設定屬性
1.frame屬性
第2種方法建立按鈕後你可以給按鈕的frame屬性賦值,用乙個cgrect結構設定他的位置和大小
cgrect btn2frame = cgrectmake(10.0, 10.0, 60.0, 44.0); btn2.frame =btn2frame;2. title屬性
對於任何特定狀態下的按鈕,都可以設定該按鈕該狀態下的按鈕標題。用settitle 方法 設定即可:
[btn1 settitle:@"btn1" forstate:uicontrolstatenormal];
你也可以為按鈕的某一狀態設定為圖。用 setimage 即可:
[btn2 setimage:[uiimage imagenamed:@"pic"] forstate:uicontrolstatenormal];
此外,你還可以為每種按鈕狀態設定標題的顏色和陰影,以及按鈕的背景。方法 settitlecolor 和 settitleshadowcolor 都需要乙個uicolor物件做引數:
[btn1 settitlecolor:[uicolor redcolor] forstate:uicontrolstatenormal];//設定標題顏色 [btn1 settitleshadowcolor:[uicolor graycolor] forstate:uicontrolstatenormal ];//陰影 [btn1 setbackgroundimage:[uiimage imagenamed:@"pic"] forstate:uicontrolstatehighlighted];//背景影象
上面幾個方法都提到 共同的引數 forstate . 這個引數決定了標題、影象或其他屬性將在何種狀態下顯現。你可以程式設計令按鈕在那個狀態變化
當按鈕高亮或者禁用,uibutton 類可以調整自己的外觀,下面幾個屬性可以讓你按照需要對按鈕的外觀進行微調:
adjustsimagewhenhighlighted
預設情況下,在按鈕被禁用時,影象會被畫的顏色深一些。要禁用此功能,請將這個屬性設定為no:
btn1.adjustsimagewhenhighlighted = no;
adjustsimagewhendisabled
預設情況下,按鈕在被禁用時,影象會被畫的顏色淡一些。要禁用此功能,請將這個屬性設定為no:
btn1.adjustsimagewhendisabled = no;
showstouchwhenhighlighted 這個
屬性設定為yes,可令按鈕在按下時發光。這可以用於資訊按鈕或者有些重要的按鈕:
btn1.showstouchwhenhighlighted = yes;三、顯示控制項
顯示控制項一如繼往的簡單:
[self.view addsubview:btn1]; [self.view addsubview:btn2];
四、重寫繪製行為
你可以通過子類化按鈕來定製屬於你自己的按鈕類。在子類化的時候你可以過載下面這些方法,這些方法返回cgrect結構,指明了按鈕每一組成部分的邊界。
注意:不要直接呼叫這些方法, 這些方法是你寫給系統呼叫的。
backgroundrectforbounds //指定背景邊界contentrectforbounds // 指定內容邊界titlerectforcontentrect // 指定文字標題邊界imagerectforcontentrect //指定按鈕影象邊界
例: - (cgrect)imagerectforcontentrect:(cgrect)bounds
五、新增動作
按鈕是用來幹嘛的?用來激發某個動作或事件的。那我們我們要為他新增乙個動作,與 uicontrol 裡講的一樣:
-(void)btnpressed:(id)sender [btn1 addtarget:self action:@selector(btnpressed:) forcontrolevents:uicontroleventtouchupinside];
六、end
end?還未結束,不過uibutton結束了,留下乙個未結束的話題: uibarbuttonitem .他和uibutton啥關係,後面會有文章來講,目前你只要搞清楚uibutton就好了。
乙個寫此文用的小demo附在後面:uibuttondemo
UIButton 按鈕控制項 IOS開發
uibutton是乙個標準的uicontrol控制項,所以如果你對uicontrol不甚了解還是先看一下我的另一篇博文 uicontrol ios控制項程式設計 一 建立 兩種方法 1.常規的 initwithframe uibutton btn1 uibutton alloc initwithfr...
UIButton 按鈕控制項 IOS開發 (例項)
uibutton是乙個標準的uicontrol控制項,所以如果你對uicontrol不甚了解還是先看一下我的另一篇博文 uicontrol ios控制項程式設計 一 建立 兩種方法 1.常規的 initwithframe uibutton btn1 uibutton alloc initwithfr...
IOS之UI 按鈕UIButton的細節
1 內部子控制項 2 按鈕拉伸問題 2 1 拉伸 2 2 無 拉伸 如果想要改變按鈕內部子控制項的屬性,只能自定義按鈕 內邊距 設定按鈕內容的內邊距 影響到imageview和titlelabel property nonatomic uiedgeinsets contentedgeinsets 設...