iOS 開發(fā)-UIButton(按鈕)的使用

UIButton的基本使用

1. 創(chuàng)建button

? ??UIButton *btn = [UIButton buttonWithType:(UIButtonType)UIButtonTypeCustom];

????UIButtonType? ? 枚舉類型

? ??????UIButtonTypeCustom?= 0 ? ?自定義風格

? ??????UIButtonTypeRoundedRect ? ?圓角矩形

????????UIButtonTypeDetailDisclosure ? ?藍色小箭頭按鈕, 主要做詳細說明使用

? ??????UIButtonTypeInfoLight ? ?亮色感嘆號

? ??????UIButtonTypeInfoDark ? ?暗色感嘆號

? ??????UIButtonTypeContactAdd ? ?十字加號按鈕

2. frame? ? 設(shè)置按鈕的位置大小

? ??btn.frame = CGRectMake(0,104,SCREEN_Width,40); (SCREEN_Width 屏幕寬度)

3. title 按鈕樣式內(nèi)容

? ??[btn setTitle:@"本是惡魔世界里的小丑, 奈何生長在了耀眼的和平世界" forState: UIControlStateNormal]; 設(shè)置按鈕文本內(nèi)容

? ? [btn setTitleColor:[UIColor blackColor] forState:(UIControlState)UIControlStateNormal]; 設(shè)置按鈕文本字體顏色

? ??[btn setImage:[UIImage imageNamed:@"weChat"] forState:(UIControlStateNormal)]; 給按鈕設(shè)置圖片,

? ? 在同時設(shè)置按鈕的圖片和文字內(nèi)容時會左邊顯示圖片, 右邊顯示文字, 如下圖

同時設(shè)置文字和圖片

? ??btn.backgroundColor = [UIColor yellowColor]; ? ?給按鈕設(shè)置背景顏色

? ??[btn setBackgroundImage:[UIImage imageNamed:@"share"] forState:(UIControlStateNormal)]; 按鈕設(shè)置背景圖片

? ??btn.layer.masksToBounds = YES;

? ? btn.layer.cornerRadius = 10;

? ? btn.layer.borderColor = [UIColor blueColor].CGColor;

? ? btn.layer.borderWidth = 1; ? ?以上四行代碼就是設(shè)置按鈕的圓角和邊框(UIlabel等控件同)

? ??UIControlState 按鈕枚舉類型

? ??????UIControlStateNormal = 0 ? ?常規(guī)狀態(tài)顯示 (使用次數(shù)居多)

? ??????UIControlStateHighlighted ? ?高亮狀態(tài)顯示

? ??????UIControlStateDisabled ? ?禁用的狀態(tài)才能顯示

? ??????UIControlStateSelected ? ?選中時顯示的狀態(tài)

? ??????UIControlStateFocused ? ?當獲得焦點狀態(tài)時才會顯示

? ??????UIControlStateApplication ? ?當應(yīng)用程序標志時顯示

? ??????UIControlStateReserved ? ?為內(nèi)部框架預留, 開發(fā)時不用管

4.?adjustsImageWhenHighlighted?默認情況下庆揩,當按鈕高亮的情況下罢屈,圖像的顏色會被畫深一點

? ? ? ? btn.adjustsImageWhenHighlighted = NO;????如果這下面的這個屬性設(shè)置為no,?那么可以去掉這個功能

5.?adjustsImageWhenDisabled 如果4的按鈕設(shè)置為NO時 設(shè)置這個屬性為NO時會取消4的設(shè)置

? ? ? ? btn.adjustsImageWhenDisabled = NO;

6.?showsTouchWhenHighlighted 當這個屬性為YES時按下按鈕會發(fā)光

? ? ? ? btn.showsTouchWhenHighlighted = YES; 親測有效

7. 給按鈕添加點擊事件addTarget

????????[btn addTarget:self action:@selector(selectorBtn) forControlEvents:(UIControlEventAllTouchEvents)];

? ??UIControlEvents 點擊事件枚舉類型

? ??????UIControlEventTouchDown

????????單點觸摸按下事件:用戶點觸屏幕饰恕,或者又有新手指落下的時候。

? ??????UIControlEventTouchDownRepeat

????????多點觸摸按下事件,點觸計數(shù)大于1:用戶按下第二访雪、三至耻、或第四根手指的時候煌张。

? ??????UIControlEventTouchDragInside

????????當一次觸摸在控件窗口內(nèi)拖動時膘盖。

? ??????UIControlEventTouchDragOutside

????????當一次觸摸在控件窗口之外拖動時至会。

????????UIControlEventTouchDragEnter

????????當一次觸摸從控件窗口之外拖動到內(nèi)部時褒搔。

????????UIControlEventTouchDragExit

????????當一次觸摸從控件窗口內(nèi)部拖動到外部時夷磕。

????????UIControlEventTouchUpInside (常用)

????????所有在控件之內(nèi)觸摸抬起事件。

????????UIControlEventTouchUpOutside

????????所有在控件之外觸摸抬起事件(點觸必須開始與控件內(nèi)部才會發(fā)送通知)亏拉。

????????UIControlEventTouchCancel

????????所有觸摸取消事件扣蜻,即一次觸摸因為放上了太多手指而被取消逆巍,或者被上鎖或者電話呼叫打斷。

????????UIControlEventTouchChanged

????????當控件的值發(fā)生改變時莽使,發(fā)送通知锐极。用于滑塊、分段控件吮旅、以及其他取值的控件溪烤。你可以配置滑塊控件何時發(fā)送通知,在滑塊被放下時發(fā)送庇勃,或者在被拖動時發(fā)送。

????????UIControlEventEditingDidBegin

????????當文本控件中開始編輯時發(fā)送通知槽驶。

????????UIControlEventEditingChanged

????????當文本控件中的文本被改變時發(fā)送通知责嚷。

????????UIControlEventEditingDidEnd

????????當文本控件中編輯結(jié)束時發(fā)送通知。

????????UIControlEventEditingDidOnExit

????????當文本控件內(nèi)通過按下回車鍵(或等價行為)結(jié)束編輯時掂铐,發(fā)送通知罕拂。

????????UIControlEventAlltouchEvents

????????通知所有觸摸事件。

????????UIControlEventAllEditingEvents

????????通知所有關(guān)于文本編輯的事件全陨。

????????UIControlEventAllEvents

????????通知所有事件爆班。

8. 按鈕樣式圖片+文字

? ? ? ? 樣式需要重寫button方法, 可以網(wǎng)上搜索一下, 很多文章本文小編給放一個在上面

? ? ? ? .h文件里面

? ??????????@interfaceUIButton(Extensions)

????????????- (void)setUpImageAndDownLableWithSpace:(CGFloat)space; ? ?上部分是圖片,下部分是文字

????????????- (void)setLeftTitleAndRightImageWithSpace:(CGFloat)space;????左邊是文字,右邊是圖片

????????????- (void)setBadgeValue:(NSInteger)badgeValue;????設(shè)置角標的個數(shù)(右上角)

? ??????????@end

? ? ? ? .m文件里面

? ??????????@implementation UIButton (Extensions)

?????????????上部分是圖片,下部分是文字

????????????- (void)setUpImageAndDownLableWithSpace:(CGFloat)space{

? ? ????????????CGSizeimageSize =self.imageView.frame.size;

? ? ????????????CGSizetitleSize =self.titleLabel.frame.size;

? ? ????????????// titleLabel的寬度不一定正確的時候辱姨,需要進行判斷

? ? ????????????CGFloat labelWidth = self.titleLabel.intrinsicContentSize.width;

? ? ????????????if(titleSize.width< labelWidth) {

? ? ? ? ????????????titleSize.width= labelWidth;

? ? ????????????}

? ? ????????????// 文字距上邊框的距離增加imageView的高度+間距柿菩,距離左邊框減少imageView的寬度,距離下邊框和右????????邊框距離不變

? ? ????????????[selfsetTitleEdgeInsets:UIEdgeInsetsMake(imageSize.height+space, -15, -space,0)];

? ? ????????????// 圖片距右邊框的距離減少圖片的寬度雨涛,距離上面的間隔枢舶,其它不變

? ? ????????????[selfsetImageEdgeInsets:UIEdgeInsetsMake(-space*2, -space*0.5,0.0,-titleSize.width)];

????????????}

????????????左邊是文字,右邊是圖片(和原來的樣式翻過來)

????????????- (void)setLeftTitleAndRightImageWithSpace:(CGFloat)space{

? ????????????? CGSizeimageSize =self.imageView.frame.size;

? ? ????????????CGSizetitleSize =self.titleLabel.frame.size;

? ? ? ? ? ? ? ?// titleLabel的寬度不一定正確的時候替久,需要進行判斷

? ? ????????????CGFloat labelWidth = self.titleLabel.intrinsicContentSize.width;

? ? ????????????if(titleSize.width< labelWidth) {

? ? ? ? ????????titleSize.width= labelWidth;

? ? ????????????}

? ? ????????// 文字距左邊框的距離減少imageView的寬度-間距凉泄,右側(cè)增加距離imageView的寬度

? ? ????????[selfsetTitleEdgeInsets:UIEdgeInsetsMake(0.0, -imageSize.width- space,0.0, imageSize.width)];

? ? ????????// 圖片距左邊框的距離增加titleLable的寬度,距右邊框的距離減少titleLable的寬度

? ? ????????[selfsetImageEdgeInsets:UIEdgeInsetsMake(0.0, titleSize.width,0.0,-titleSize.width)];

????????????}

?????????????設(shè)置角標的個數(shù)(右上角

? ? ? ? ? ? ? - (void)setBadgeValue:(NSInteger)badgeValue{

? ? ????????????????CGFloatbadgeW? = 20;

? ? ????????????????CGSizeimageSize =?self.imageView.frame.size;

? ? ????????????????CGFloatimageX? =?self.imageView.frame.origin.x;

? ? ????????????????CGFloatimageY? =?self.imageView.frame.origin.y;

? ? ????????????????UILabel*badgeLable = [[UILabelalloc]init];

? ? ? ? ? ? ? ? ? ? badgeLable.text = [NSStringstringWithFormat:@"%ld",badgeValue];

? ? ????????????????badgeLable.textAlignment = NSTextAlignmentCenter;

? ? ????????????????badgeLable.textColor= [UIColorwhiteColor];

? ? ????????????????badgeLable.font = [UIFontsystemFontOfSize:12];

? ? ????????????????badgeLable.layer.cornerRadius = badgeW*0.5;

? ? ????????????????badgeLable.clipsToBounds =?YES;

? ? ????????????????badgeLable.backgroundColor = [UIColorredColor];

? ? ????????????????CGFloatbadgeX = imageX + imageSize.width- badgeW*0.5;

? ? ????????????????CGFloatbadgeY = imageY - badgeW*0.25;

? ? ????????????????badgeLable.frame = CGRectMake(badgeX, badgeY, badgeW, badgeW);

? ? ????????????????[self?addSubview:badgeLable];

????????????????}

? ??????????@end

此上就是UIButton在使用中的常用屬性以及使用方法, 如有不足或者錯誤, 歡迎大家前來糾正, 謝謝

最后編輯于
?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請聯(lián)系作者
  • 序言:七十年代末,一起剝皮案震驚了整個濱河市蚯根,隨后出現(xiàn)的幾起案子后众,更是在濱河造成了極大的恐慌,老刑警劉巖颅拦,帶你破解...
    沈念sama閱讀 218,525評論 6 507
  • 序言:濱河連續(xù)發(fā)生了三起死亡事件蒂誉,死亡現(xiàn)場離奇詭異,居然都是意外死亡矩距,警方通過查閱死者的電腦和手機拗盒,發(fā)現(xiàn)死者居然都...
    沈念sama閱讀 93,203評論 3 395
  • 文/潘曉璐 我一進店門,熙熙樓的掌柜王于貴愁眉苦臉地迎上來锥债,“玉大人陡蝇,你說我怎么就攤上這事痊臭。” “怎么了登夫?”我有些...
    開封第一講書人閱讀 164,862評論 0 354
  • 文/不壞的土叔 我叫張陵广匙,是天一觀的道長。 經(jīng)常有香客問我恼策,道長鸦致,這世上最難降的妖魔是什么? 我笑而不...
    開封第一講書人閱讀 58,728評論 1 294
  • 正文 為了忘掉前任涣楷,我火速辦了婚禮分唾,結(jié)果婚禮上,老公的妹妹穿的比我還像新娘狮斗。我一直安慰自己绽乔,他們只是感情好,可當我...
    茶點故事閱讀 67,743評論 6 392
  • 文/花漫 我一把揭開白布碳褒。 她就那樣靜靜地躺著折砸,像睡著了一般。 火紅的嫁衣襯著肌膚如雪沙峻。 梳的紋絲不亂的頭發(fā)上睦授,一...
    開封第一講書人閱讀 51,590評論 1 305
  • 那天,我揣著相機與錄音摔寨,去河邊找鬼去枷。 笑死,一個胖子當著我的面吹牛祷肯,可吹牛的內(nèi)容都是我干的沉填。 我是一名探鬼主播,決...
    沈念sama閱讀 40,330評論 3 418
  • 文/蒼蘭香墨 我猛地睜開眼佑笋,長吁一口氣:“原來是場噩夢啊……” “哼翼闹!你這毒婦竟也來了?” 一聲冷哼從身側(cè)響起蒋纬,我...
    開封第一講書人閱讀 39,244評論 0 276
  • 序言:老撾萬榮一對情侶失蹤猎荠,失蹤者是張志新(化名)和其女友劉穎,沒想到半個月后蜀备,有當?shù)厝嗽跇淞掷锇l(fā)現(xiàn)了一具尸體关摇,經(jīng)...
    沈念sama閱讀 45,693評論 1 314
  • 正文 獨居荒郊野嶺守林人離奇死亡,尸身上長有42處帶血的膿包…… 初始之章·張勛 以下內(nèi)容為張勛視角 年9月15日...
    茶點故事閱讀 37,885評論 3 336
  • 正文 我和宋清朗相戀三年碾阁,在試婚紗的時候發(fā)現(xiàn)自己被綠了输虱。 大學時的朋友給我發(fā)了我未婚夫和他白月光在一起吃飯的照片。...
    茶點故事閱讀 40,001評論 1 348
  • 序言:一個原本活蹦亂跳的男人離奇死亡脂凶,死狀恐怖宪睹,靈堂內(nèi)的尸體忽然破棺而出愁茁,到底是詐尸還是另有隱情,我是刑警寧澤亭病,帶...
    沈念sama閱讀 35,723評論 5 346
  • 正文 年R本政府宣布鹅很,位于F島的核電站,受9級特大地震影響罪帖,放射性物質(zhì)發(fā)生泄漏促煮。R本人自食惡果不足惜,卻給世界環(huán)境...
    茶點故事閱讀 41,343評論 3 330
  • 文/蒙蒙 一整袁、第九天 我趴在偏房一處隱蔽的房頂上張望菠齿。 院中可真熱鬧,春花似錦葬项、人聲如沸泞当。這莊子的主人今日做“春日...
    開封第一講書人閱讀 31,919評論 0 22
  • 文/蒼蘭香墨 我抬頭看了看天上的太陽。三九已至盗飒,卻和暖如春嚷量,著一層夾襖步出監(jiān)牢的瞬間,已是汗流浹背逆趣。 一陣腳步聲響...
    開封第一講書人閱讀 33,042評論 1 270
  • 我被黑心中介騙來泰國打工蝶溶, 沒想到剛下飛機就差點兒被人妖公主榨干…… 1. 我叫王不留,地道東北人宣渗。 一個月前我還...
    沈念sama閱讀 48,191評論 3 370
  • 正文 我出身青樓抖所,卻偏偏與公主長得像,于是被迫代替她去往敵國和親痕囱。 傳聞我的和親對象是個殘疾皇子田轧,可洞房花燭夜當晚...
    茶點故事閱讀 44,955評論 2 355

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