UIButton 使用全面解析

2021-12-29 16:22:43 字數 2545 閱讀 1909

一、建立

兩種方法:

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. 屬性

對於任何特定狀態下的按鈕,都可以設定該按鈕該狀態下的按鈕標題。用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 裡講的一樣:

[btn1 addtarget:self action:@selector(btnpressed:) forcontrolevents:uicontroleventtouchupinside]; 

-(void)btnpressed:(id)sender 

UIButton 使用大全

為自定義的btn 設定 響應方法 btnwyqzl addtarget selfaction selector btnwyqzlclicked forcontrolevents uicontroleventtouchupinside btnwyqzlclicked 在.h 檔案中的宣告如下 ibac...

全面解析Redis

關係型資料庫在處理海量資料和高併發等技術的時候不是太友善,因此有人提出非關係型資料庫 所以有了基於對關係型資料庫的補充nosql 目前具有的特點 1 可擴充,可伸縮 2 大量資料下的高效能 redis能讀的速度是110000次 s,寫的速度是81000次 s 3 靈活的資料模型 4 高可用 redi...

全面解析Ajax和jsonp使用總結

前言 ajax和jsonp可以與後台通訊,獲取資料和資訊,但是又不用重新整理整個頁面,實現頁面的區域性重新整理。一 ajax 定義 一種傳送http請求與後台進行非同步通訊的技術。原理 例項化xmlhttp物件,使用此物件與後台通訊。ajax的同源策略 ajax請求的頁面或資源只能是同乙個域下面的資...