介紹:UIButton的類是一個(gè)UIControl子類,它實(shí)現(xiàn)了在觸摸屏上的按鈕。觸摸一個(gè)按鈕攔截事件和動(dòng)作消息發(fā)送到目標(biāo)對(duì)象時(shí)。設(shè)定的目標(biāo)和行動(dòng)方法都繼承自UIControl。這個(gè)類提供了方法來(lái)設(shè)置標(biāo)題,圖像骂维,按鈕等外觀屬性。通過使用set方法贺纲,你可以指定一個(gè)不同的外觀為每個(gè)按鈕狀態(tài)航闺。
創(chuàng)建使用步驟:
1.UIButton*btn = [UIButtonbuttonWithType:UIButtonTypeCustom];//創(chuàng)建對(duì)象
2.[self.viewaddSubview:btn];//添加按鈕
3.btn.frame=CGRectMake(100,100,100,100);//設(shè)置按鈕的位置和尺寸,才能顯示
4.btnaddTarget:selfaction:@selector(btnClick)//監(jiān)聽按鈕的點(diǎn)擊事件forControlEvents:UIControlEventTouchUpInside];監(jiān)聽按鈕點(diǎn)擊(點(diǎn)擊按鈕后就會(huì)調(diào)用self的btnClick方法) //都能調(diào)用void和IBactionTarget目標(biāo)(讓誰(shuí)做事情)—>控制器action方法(做什么事情)Events事件(當(dāng)按鈕觸發(fā)某事件)點(diǎn)擊按鈕內(nèi)部并松手
類方法:
UIButton*btn = [UIButtonbuttonWithType:UIButtonTypeCustom]; //按鈕類型
創(chuàng)建的button類型有以下6種,
typedef enum {
UIButtonTypeCustom = 0, 自定義風(fēng)格
UIButtonTypeRoundedRect,圓角矩形
UIButtonTypeDetailDisclosure, 藍(lán)色小箭頭按鈕猴誊,主要做詳細(xì)說明用
UIButtonTypeInfoLight, 亮色感嘆號(hào)
UIButtonTypeInfoDark, 暗色感嘆號(hào)
UIButtonTypeContactAdd, 十字加號(hào)按鈕
} UIButtonType;
刪除事件處理
[btn removeTarget:nil action:nil forControlEvents:UIControlEventTouchUpInside];
UIButton潦刃、UILabel、UITextField都繼承自UIView
屬性:
1.Frame屬性
第2種方法創(chuàng)建按鈕后你可以給按鈕的frame屬性賦值懈叹,用一個(gè)CGRect結(jié)構(gòu)設(shè)置他的位置和大小
CGRect btn2Frame = CGRectMake(10.0, 10.0, 60.0, 44.0);
btn2.frame =btn2Frame;
2. title屬性
對(duì)于任何特定狀態(tài)下的按鈕乖杠,都可以設(shè)定該按鈕該狀態(tài)下的按鈕標(biāo)題。用setTitle 方法 設(shè)置即可:
[btn1 setTitle:@"BTN1" forState:UIControlStateNormal];
3. image屬性
你也可以為按鈕的某一狀態(tài)設(shè)置為圖澄成。用 setImage 即可:
[btn2 setImage:[UIImage imageNamed:@"pic"] forState:UIControlStateNormal];
4. Color屬性
此外胧洒,你還可以為每種按鈕狀態(tài)設(shè)置標(biāo)題的顏色和陰影,以及按鈕的背景墨状。方法 setTitleColor 和 setTitleShadowColor 都需要一個(gè)UIColor對(duì)象做參數(shù):
[btn1 setTitleColor:[UIColor redColor] forState:UIControlStateNormal];//設(shè)置標(biāo)題顏色
[btn1 setTitleShadowColor:[UIColor grayColor] forState:UIControlStateNormal ];//陰影
[btn1 setBackgroundImage:[UIImage imageNamed:@"PIC"] forState:UIControlStateHighlighted];//背景圖像
5.使用時(shí)狀態(tài)
上面幾個(gè)方法都提到 共同的參數(shù) forState . 這個(gè)參數(shù)決定了標(biāo)題卫漫、圖像或其他屬性將在何種狀態(tài)下顯現(xiàn)。你可以編程令按鈕在那個(gè)狀態(tài)變化
enum {
UIControlStateNormal?????? = 0,??//常態(tài)
UIControlStateHighlighted??= 1 << 0,??????????????????// used when UIControl isHighlighted is set 高亮
UIControlStateDisabled???? = 1 << 1,??//禁用
UIControlStateSelected???? = 1 << 2,??????????????????// flag usable by app (see below) 選中
UIControlStateApplication??= 0x00FF0000,??????????????// additional flags available for application use 當(dāng)應(yīng)用程序標(biāo)志使用時(shí)
UIControlStateReserved???? = 0xFF000000?????????????? // flags reserved for internal framework use??為內(nèi)部框架預(yù)留的
};
typedef NSUInteger UIControlState;
設(shè)置按鈕按下會(huì)發(fā)光
button.showsTouchWhenHighlighted=NO;
設(shè)置按鈕內(nèi)部圖片間距和標(biāo)題間距
UIEdgeInsets insets; // 設(shè)置按鈕內(nèi)部圖片間距
insets.top = insets.bottom = insets.right = insets.left = 20;
bt.contentEdgeInsets = insets;
bt.titleEdgeInsets = insets; // 標(biāo)題間距
提示:
·按鈕的背景顏色background color不能分狀態(tài),因?yàn)槔^承UIView [對(duì)象 setbackgroundColor] 沒狀態(tài)
·默認(rèn)加入內(nèi)容image(及其文字title)圖片水平居中 //通過Control屬性的alignment屬性修改對(duì)齊,最后個(gè)(水平對(duì)齊)能使圖片拉伸【第一次在IB中添加會(huì)是圖片尺寸大小】【backimage會(huì)是按鈕大小(拉伸壓縮)】
·默認(rèn)背景圖片background會(huì)被拉伸,按鈕圖片都能被壓縮(控件尺寸小于圖片)
·不能直接修改對(duì)象的buttonType屬性(readonly),只能在初始化創(chuàng)建時(shí)候設(shè)置 ,設(shè)置狀態(tài)時(shí)設(shè)置按鈕文字圖片