UIButton簡單介紹

?UIButton的創(chuàng)建和主要屬性

?UIButton從字面上大家就應(yīng)該能看出來是一個可點(diǎn)擊的控件扣囊,類似于android中button淮逻,UIButton繼承與UIView塞俱,UIView是ios中所有控件的父類飞涂。(以下簡稱btn)

創(chuàng)建方式

btn創(chuàng)建有兩種:

(1)常規(guī)的initwithFrame恩沛,也就是通過alloc的方法來創(chuàng)建枣耀。

UIButton *btn=[UIButton alloc]initWithFrame:CGRectMake(x,y,width,height);

后面的四個屬性霉晕,代表來btn的x坐標(biāo),y坐標(biāo),寬牺堰,高拄轻。這些坐標(biāo)都是以屏幕左上角為原點(diǎn)的。Frame屬性就是用來控制位置和大小的

(2)UIButton的類方法buttonWithType伟葫,也就是類似android中的靜態(tài)方法恨搓。

UIButton * btn=[UIButton buttonwithType:UIButtonTypeCustom]; 這種方式創(chuàng)建出不同類型的btn對象,類型樣式下面介紹筏养。

屬性方法

[btn.setTitle:@"你好" forState:UIControlStateNomal]//設(shè)置btn的文字斧抱,后面State為btn的狀態(tài)。

btn.contentHorizontalAlignment=UIControlContentHorizontalAlignmentCenter;//設(shè)置btn文字位置渐溶,居中辉浦。

[btn setTitleColor:[UIColorblueColor]forState:UIControlStateNormal];// 設(shè)置btn的背景顏色。

UIImage*image=[UIImageimageNamed:@"btn01"];//獲取image對象茎辐,用于設(shè)置btn背景圖片

[btn setBackgroundImage:imageforState:UIControlStateNormal];//state為狀態(tài)

能夠定義的button類型由6種

typedefenum

{

UIButtonTypeCustom?=?0,//自定義宪郊,無風(fēng)格

UIButtonTypeRoundedRect,//白色圓角矩形,類似偏好設(shè)置表格單元或者地址簿卡片

UIButtonTypeDetailDisclosure,//藍(lán)色的披露按鈕荔茬,可放在任何文字旁

UIButtonTypeInfoLight,//微件(widget)使用的小圓圈信息按鈕废膘,可以放在任何文字旁

UIButtonTypeInfoDark,//白色背景下使用的深色圓圈信息按鈕

UIButtonTypeContactAdd,//藍(lán)色加號(+)按鈕,可以放在任何文字旁

}?UIButtonType;

btn.titleLabel.font=[UIFontsystemFontOfSize:30];//設(shè)置字體大小

[btn setTitleColor:[UIColor blueColor]forState:UIControlStateNormal];//設(shè)置btn文字顏色

[btn setTag;1001]//設(shè)置tag值慕蔚,類似于android中控件的tag值丐黄,用于標(biāo)示控件的唯一性。

btn.layer.cornerRadius=4.5;//設(shè)置btn的圓角

btn.layer.borderWidth=0.5;//設(shè)置btn邊框高度

CGColorSpaceRefspace=CGColorSpaceCreateDeviceRGB();//設(shè)置顏色空間為rbg

CGColorRefborderColor=CGColorCreate(space, (CGFloat[]){0,0,0,1});//大括弧中代表r孔飒,b灌闺,g,alpha(透明度)

btn.layer.borderColor=borderColor;//設(shè)置btn邊框顏色

參數(shù) forState . 這個參數(shù)決定了標(biāo)題坏瞄、圖像或其他屬性將在何種狀態(tài)下顯現(xiàn)桂对。你可以編程令按鈕在那個狀態(tài)變化。

enum{

UIControlStateNormal???????=?0,//常態(tài)

UIControlStateHighlighted??=?1?<<?0,//高亮

UIControlStateDisabled?????=?1?<<?1,//禁用

UIControlStateSelected?????=?1?<<?2,//選中

UIControlStateApplication??=?0x00FF0000,//當(dāng)應(yīng)用程序標(biāo)志使用時

UIControlStateReserved?????=?0xFF000000//為內(nèi)部框架預(yù)留的

};

typedef?NSUInteger?UIControlState;

你只要掌握前四種狀態(tài)就好了鸠匀。

當(dāng)按鈕高亮或者禁用蕉斜,UIButton?類可以調(diào)整自己的外觀,下面幾個屬性可以讓你按照需要對按鈕的外觀進(jìn)行微調(diào):

adjustsImageWhenHighlighted

默認(rèn)情況下缀棍,在按鈕被禁用時宅此,圖像會被畫的顏色深一些。要禁用此功能爬范,請將這個屬性設(shè)置為NO:

btn1.adjustsImageWhenHighlighted?=?NO;

adjustsImageWhenDisabled

默認(rèn)情況下父腕,按鈕在被禁用時,圖像會被畫的顏色淡一些青瀑。要禁用此功能璧亮,請將這個屬性設(shè)置為NO:

btn1.adjustsImageWhenDisabled?=?NO;

showsTouchWhenHighlighted

這個屬性設(shè)置為YES萧诫,可令按鈕在按下時發(fā)光。這可以用于信息按鈕或者有些重要的按鈕:

btn1.showsTouchWhenHighlighted?=?YES;

你可以通過子類化按鈕來定制屬于你自己的按鈕類枝嘶。在子類化的時候你可以重載下面這些方法帘饶,這些方法返回CGRect結(jié)構(gòu),指明了按鈕每一組成部分的邊界群扶。

注意:不要直接調(diào)用這些方法尖奔,?這些方法是你寫給系統(tǒng)調(diào)用的。

backgroundRectForBounds//指定背景邊界

contentRectForBounds//指定內(nèi)容邊界

titleRectForContentRect//指定文字標(biāo)題邊界

imageRectForContentRect//指定按鈕圖像邊界

例:

-?(CGRect)imageRectForContentRect:(CGRect)bounds

{

returnCGRectMake(0.0,?0.0,?44,?44);

}

[btn1?addTarget:self?action:@selector(btnPressed:)?forControlEvents:UIControlEventTouchUpInside];//添加點(diǎn)擊按鈕事件

-(void)btnPressed:(id)sender

{

UIButton*?btn?=?(UIButton*)sender;

//開始寫你自己的動作

}

forControlEvents參數(shù)類型

typedef?NS_OPTIONS(NSUInteger,?UIControlEvents)

{

UIControlEventTouchDown ? ? ? ? ? ? ? ? =?1?<<??0,//單點(diǎn)觸摸按下事件:用戶點(diǎn)觸屏幕穷当,或者又有新手指落下的時候提茁。

UIControlEventTouchDownRepeat ? ? ?=?1?<<??1,//多點(diǎn)觸摸按下事件,點(diǎn)觸計(jì)數(shù)大于1:用戶按下第二馁菜、三茴扁、或第四根手指的時候。

UIControlEventTouchDragInside ? ? ? ? =?1?<<??2,//當(dāng)一次觸摸在控件窗口內(nèi)拖動時汪疮。

UIControlEventTouchDragOutside ? ? ? =?1?<<??3,//當(dāng)一次觸摸在控件窗口之外拖動時峭火。

UIControlEventTouchDragEnter ? ? ? ? ? =?1?<<??4,//當(dāng)一次觸摸從控件窗口之外拖動到內(nèi)部時

UIControlEventTouchDragExit ? ? ? ? ? ??=?1?<<??5,//當(dāng)一次觸摸從控件窗口內(nèi)部拖動到外部時。

UIControlEventTouchUpInside ? ? ? ? ? ?=?1?<<??6,//所有在控件之內(nèi)觸摸抬起事件

UIControlEventTouchUpOutside ? ? ? ? ?=?1?<<??7,//所有在控件之外觸摸抬起事件(點(diǎn)觸必須開始與控件內(nèi)部才會發(fā)送通知)智嚷。

UIControlEventTouchCancel ? ? ? ? ? ? ? ?=?1?<<??8,//所有觸摸取消事件卖丸,即一次觸摸因?yàn)榉派狭颂嗍种付蝗∠蛘弑簧湘i或者電話呼叫打斷盏道。

UIControlEventValueChanged ? ? ? ? ? ??=?1?<<?12,//當(dāng)控件的值發(fā)生改變時稍浆,發(fā)送通知。用于滑塊猜嘱、分段控件衅枫、以及其他取值的控件。你可以配置滑塊控件何時發(fā)送通知朗伶,在滑塊被放下時發(fā)送弦撩,或者在被拖動時發(fā)送。

UIControlEventEditingDidBegin ? ? ? ? ??=?1?<<?16,//當(dāng)文本控件中開始編輯時發(fā)送通知

UIControlEventEditingChanged ? ? ? ? ??=?1?<<?17,//當(dāng)文本控件中的文本被改變時發(fā)送通知论皆。

UIControlEventEditingDidEnd ? ? ? ? ? ? ?=?1?<<?18,//當(dāng)文本控件中編輯結(jié)束時發(fā)送通知益楼。

UIControlEventEditingDidEndOnExit ? ?=?1?<<?19,//當(dāng)文本控件內(nèi)通過按下回車鍵(或等價行為)結(jié)束編輯時,發(fā)送通知点晴。

UIControlEventAllTouchEvents ? ? ? ? ? ??=?0x00000FFF,//通知所有觸摸事件感凤。

UIControlEventAllEditingEvents ? ? ? ? ??=?0x000F0000,//通知所有關(guān)于文本編輯的事件。

UIControlEventApplicationReserved ? ?=?0x0F000000,//range?available?for?application?use

UIControlEventSystemReserved ? ? ? ? ?=?0xF0000000,//range?reserved?for?internal?framework?use

UIControlEventAllEvents ? ? ? ? ? ? ? ? ? ? ?=?0xFFFFFFFF//通知所有事件

};

需要顯示在view上方法如下觉鼻;

[self.view addSubview:btn1];

總結(jié)

btn主要屬性就是這些俊扭,其他的一些控件因?yàn)槎际抢^承于UIView所以队橙,屬性內(nèi)容都差不多坠陈。在此就不一一介紹了萨惑,當(dāng)遇到特定的在單獨(dú)介紹。

最后編輯于
?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請聯(lián)系作者
  • 序言:七十年代末仇矾,一起剝皮案震驚了整個濱河市庸蔼,隨后出現(xiàn)的幾起案子,更是在濱河造成了極大的恐慌贮匕,老刑警劉巖姐仅,帶你破解...
    沈念sama閱讀 216,544評論 6 501
  • 序言:濱河連續(xù)發(fā)生了三起死亡事件,死亡現(xiàn)場離奇詭異刻盐,居然都是意外死亡掏膏,警方通過查閱死者的電腦和手機(jī),發(fā)現(xiàn)死者居然都...
    沈念sama閱讀 92,430評論 3 392
  • 文/潘曉璐 我一進(jìn)店門敦锌,熙熙樓的掌柜王于貴愁眉苦臉地迎上來馒疹,“玉大人,你說我怎么就攤上這事乙墙∮北洌” “怎么了?”我有些...
    開封第一講書人閱讀 162,764評論 0 353
  • 文/不壞的土叔 我叫張陵听想,是天一觀的道長腥刹。 經(jīng)常有香客問我,道長汉买,這世上最難降的妖魔是什么衔峰? 我笑而不...
    開封第一講書人閱讀 58,193評論 1 292
  • 正文 為了忘掉前任,我火速辦了婚禮蛙粘,結(jié)果婚禮上朽色,老公的妹妹穿的比我還像新娘。我一直安慰自己组题,他們只是感情好葫男,可當(dāng)我...
    茶點(diǎn)故事閱讀 67,216評論 6 388
  • 文/花漫 我一把揭開白布。 她就那樣靜靜地躺著崔列,像睡著了一般梢褐。 火紅的嫁衣襯著肌膚如雪。 梳的紋絲不亂的頭發(fā)上赵讯,一...
    開封第一講書人閱讀 51,182評論 1 299
  • 那天盈咳,我揣著相機(jī)與錄音,去河邊找鬼边翼。 笑死鱼响,一個胖子當(dāng)著我的面吹牛,可吹牛的內(nèi)容都是我干的组底。 我是一名探鬼主播丈积,決...
    沈念sama閱讀 40,063評論 3 418
  • 文/蒼蘭香墨 我猛地睜開眼筐骇,長吁一口氣:“原來是場噩夢啊……” “哼!你這毒婦竟也來了江滨?” 一聲冷哼從身側(cè)響起铛纬,我...
    開封第一講書人閱讀 38,917評論 0 274
  • 序言:老撾萬榮一對情侶失蹤,失蹤者是張志新(化名)和其女友劉穎唬滑,沒想到半個月后告唆,有當(dāng)?shù)厝嗽跇淞掷锇l(fā)現(xiàn)了一具尸體,經(jīng)...
    沈念sama閱讀 45,329評論 1 310
  • 正文 獨(dú)居荒郊野嶺守林人離奇死亡晶密,尸身上長有42處帶血的膿包…… 初始之章·張勛 以下內(nèi)容為張勛視角 年9月15日...
    茶點(diǎn)故事閱讀 37,543評論 2 332
  • 正文 我和宋清朗相戀三年擒悬,在試婚紗的時候發(fā)現(xiàn)自己被綠了。 大學(xué)時的朋友給我發(fā)了我未婚夫和他白月光在一起吃飯的照片稻艰。...
    茶點(diǎn)故事閱讀 39,722評論 1 348
  • 序言:一個原本活蹦亂跳的男人離奇死亡茄螃,死狀恐怖,靈堂內(nèi)的尸體忽然破棺而出连锯,到底是詐尸還是另有隱情归苍,我是刑警寧澤,帶...
    沈念sama閱讀 35,425評論 5 343
  • 正文 年R本政府宣布运怖,位于F島的核電站拼弃,受9級特大地震影響,放射性物質(zhì)發(fā)生泄漏摇展。R本人自食惡果不足惜吻氧,卻給世界環(huán)境...
    茶點(diǎn)故事閱讀 41,019評論 3 326
  • 文/蒙蒙 一、第九天 我趴在偏房一處隱蔽的房頂上張望咏连。 院中可真熱鬧盯孙,春花似錦、人聲如沸祟滴。這莊子的主人今日做“春日...
    開封第一講書人閱讀 31,671評論 0 22
  • 文/蒼蘭香墨 我抬頭看了看天上的太陽垄懂。三九已至骑晶,卻和暖如春,著一層夾襖步出監(jiān)牢的瞬間草慧,已是汗流浹背桶蛔。 一陣腳步聲響...
    開封第一講書人閱讀 32,825評論 1 269
  • 我被黑心中介騙來泰國打工, 沒想到剛下飛機(jī)就差點(diǎn)兒被人妖公主榨干…… 1. 我叫王不留漫谷,地道東北人仔雷。 一個月前我還...
    沈念sama閱讀 47,729評論 2 368
  • 正文 我出身青樓,卻偏偏與公主長得像,于是被迫代替她去往敵國和親碟婆。 傳聞我的和親對象是個殘疾皇子电抚,可洞房花燭夜當(dāng)晚...
    茶點(diǎn)故事閱讀 44,614評論 2 353

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