?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ú)介紹。