UIButton 按鈕控制項 IOS開發

2021-07-02 19:27:49 字數 3116 閱讀 2040

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 . 這個引數決定了標題、影象或其他屬性將在何種狀態下顯現。你可以程式設計令按鈕在那個狀態變化

enum ;

typedef nsuinteger uicontrolstate;

你只要掌握前四種狀態就好了。

當按鈕高亮或者禁用,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 initwit...

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 設...