iOS-UIButton 全面解析

02.jpg

字?jǐn)?shù)1443 閱讀548 評(píng)論5 喜歡36
UIButton 的全面解析
建議收藏橄浓,用到的時(shí)候來(lái)這里一查就都明白了

初始化Button 不用alloca init 的方法 用便利構(gòu)造器初始化
UIButton *button = [UIButton buttonWithType:UIButtonTypeSystem];

typedef NS_ENUM(NSInteger, UIButtonType) {
UIButtonTypeCustom = 0, -自定義風(fēng)格
UIButtonTypeSystem NS_ENUM_AVAILABLE_IOS(7_0),
UIButtonTypeDetailDisclosure, -藍(lán)色小箭頭按鈕蜜笤,主要做詳細(xì)說(shuō)明
UIButtonTypeInfoLight, -亮色感嘆號(hào)
UIButtonTypeInfoDark, -暗色感嘆號(hào)
UIButtonTypeContactAdd, -十字加號(hào)按鈕
UIButtonTypeRoundedRect = UIButtonTypeSystem, -圓角矩形
};
//設(shè)置button frmae
button.frame = CGRectMake(100, 100, 100, 100);
//設(shè)置button 背景顏色
button.backgroundColor = [UIColor orangeColor];
//添加button的標(biāo)題
[button setTitle:@"登陸" forState:UIControlStateNormal];
//設(shè)置標(biāo)題的顏色
[button setTitleColor:[UIColor redColor] forState:UIControlStateNormal];
//設(shè)置標(biāo)題字體的大小
button.titleLabel.font = [UIFont systemFontOfSize:20];
//設(shè)置button的背景圖片
[button setBackgroundImage:[UIImage imageNamed:@"11.png"] forState:UIControlStateNormal];
//獲取指定狀態(tài)下的背景圖片
UIImage *tempImage = [button imageForState:UIControlStateNormal];
//設(shè)置前景圖片 前景圖片必須是鏤空?qǐng)D蝗羊,或者是線條勾勒的圖片
[button setImage:[UIImage imageNamed:@"7.png"] forState:UIControlStateNormal];
//設(shè)置陰影顏色
[button setTitleShadowColor:[UIColor purpleColor] forState:UIControlStateNormal];

//button 一些其他屬性
@property(nonatomic) UIEdgeInsets contentEdgeInsets; 內(nèi)容內(nèi)距離
@property(nonatomic) UIEdgeInsets titleEdgeInsets; 標(biāo)題內(nèi)距離
@property(nonatomic) BOOL reversesTitleShadowWhenHighlighted; 標(biāo)題的陰影改變時(shí)铐姚,按鈕是否高亮顯示哥倔。默認(rèn)為NO
@property(nonatomic) UIEdgeInsets imageEdgeInsets; 圖片內(nèi)邊距
@property(nonatomic) BOOL adjustsImageWhenHighlighted;按鈕高亮的情況下兜喻,圖像的顏色是否要加深一點(diǎn)涩哟。默認(rèn)是YES
@property(nonatomic) BOOL adjustsImageWhenDisabled; 按鈕禁用的情況下,圖像的顏色是否要加深一點(diǎn)侵贵。默認(rèn)是YES
@property(nonatomic) BOOL showsTouchWhenHighlighted; 按下按鈕是否會(huì)發(fā)光 默認(rèn)是NO
@property(nonatomic,readonly) UIButtonType buttonType; button的類(lèi)型

設(shè)置button某個(gè)狀態(tài)的標(biāo)題

  • (void)setTitle:(nullable NSString *)title forState:(UIControlState)state;
    例: [button setTitle:@"開(kāi)燈" forState:UIControlStateNormal];

設(shè)置button某個(gè)狀態(tài)的標(biāo)題顏色

  • (void)setTitleColor:(nullable UIColor *)color forState:(UIControlState)state
    例:[button setTitleColor:[UIColor blueColor] forState:UIControlStateNormal];

設(shè)置button某個(gè)狀態(tài)陰影的標(biāo)題顏色

  • (void)setTitleShadowColor:(nullable UIColor *)color forState:(UIControlState)state
    例:[button setTitleShadowColor:[UIColor purpleColor] forState:UIControlStateNormal];

設(shè)置button某個(gè)狀態(tài)圖片

  • (void)setImage:(nullable UIImage *)image forState:(UIControlState)state;

設(shè)置button 某個(gè)狀態(tài)背景圖片

  • (void)setBackgroundImage:(nullable UIImage *)image forState:(UIControlState)state UI_APPEARANCE_SELECTOR; // default is nil

設(shè)置button 某個(gè)狀態(tài)下的富文本標(biāo)題

  • (void)setAttributedTitle:(nullable NSAttributedString *)title forState:(UIControlState)state NS_AVAILABLE_IOS(6_0); // default is nil. title is assumed to be single line

返回button 某個(gè)狀態(tài)下的標(biāo)題

  • (nullable NSString *)titleForState:(UIControlState)state;

返回button 某個(gè)狀態(tài)下的標(biāo)題顏色

  • (nullable UIColor *)titleColorForState:(UIControlState)state;

返回button 某個(gè)狀態(tài)下的陰影標(biāo)題顏色

  • (nullable UIColor *)titleShadowColorForState:(UIControlState)state;

返回button 某個(gè)狀態(tài)下的圖片

  • (nullable UIImage *)imageForState:(UIControlState)state;

返回button 某個(gè)狀態(tài)下的背景圖片

  • (nullable UIImage *)backgroundImageForState:(UIControlState)state;

返回button 某個(gè)狀態(tài)下的富文本標(biāo)題

  • (nullable NSAttributedString *)attributedTitleForState:(UIControlState)state NS_AVAILABLE_IOS(6_0);

/* forState: 這個(gè)參數(shù)的作用是定義按鈕的文字或圖片在何種狀態(tài)下才會(huì)顯現(xiàn)*/
以下是幾種狀態(tài)
enum {
UIControlStateNormal = 0, 常規(guī)狀態(tài)顯現(xiàn)
UIControlStateHighlighted = 1 << 0, 高亮狀態(tài)顯現(xiàn)
UIControlStateDisabled = 1 << 1, 禁用的狀態(tài)才會(huì)顯現(xiàn)
UIControlStateSelected = 1 << 2, 選中狀態(tài)
UIControlStateApplication = 0x00FF0000, 當(dāng)應(yīng)用程序標(biāo)志時(shí)
UIControlStateReserved = 0xFF000000 為內(nèi)部框架預(yù)留届搁,可以不管他
};

獲取按鈕當(dāng)前標(biāo)題
@property(nullable, nonatomic,readonly,strong) NSString *currentTitle;

獲取按鈕當(dāng)前標(biāo)題顏色
@property(nonatomic,readonly,strong) UIColor *currentTitleColor;

獲取按鈕當(dāng)前陰影標(biāo)題顏色
@property(nullable, nonatomic,readonly,strong) UIColor *currentTitleShadowColor;

獲取按鈕當(dāng)前按鈕內(nèi)圖像
@property(nullable, nonatomic,readonly,strong) UIImage *currentImage;

獲取按鈕當(dāng)前標(biāo)題背景圖片
@property(nullable, nonatomic,readonly,strong) UIImage *currentBackgroundImage;

獲取按鈕當(dāng)前標(biāo)題富文本
@property(nullable, nonatomic,readonly,strong) NSAttributedString *currentAttributedTitle

@property(nullable, nonatomic,readonly,strong) UILabel *titleLabel NS_AVAILABLE_IOS(3_0);

@property(nullable, nonatomic,readonly,strong) UIImageView *imageView NS_AVAILABLE_IOS(3_0);

指定背景邊界

  • (CGRect)backgroundRectForBounds:(CGRect)bounds;
    指定內(nèi)容邊界
  • (CGRect)contentRectForBounds:(CGRect)bounds;
    指定標(biāo)題邊界
  • (CGRect)titleRectForContentRect:(CGRect)contentRect;
    指定圖片邊界
  • (CGRect)imageRectForContentRect:(CGRect)contentRect;

示例:

  • (CGRect)imageRectForContentRect:(CGRect)bounds{
    return CGRectMake(0.0, 0.0, 44, 44);
    }
    @end

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

枚舉值:

UIControlEventTouchDown             // 單點(diǎn)觸摸按下事件:用戶點(diǎn)觸屏幕,或者又有新手指落下的時(shí)候窍育。
UIControlEventTouchDownRepeat       // 多點(diǎn)觸摸按下事件卡睦,點(diǎn)觸計(jì)數(shù)大于1:用戶按下第二、三漱抓、或第四根手指的時(shí)候表锻。
UIControlEventTouchDragInside       // 當(dāng)一次觸摸在控件窗口內(nèi)拖動(dòng)時(shí)。
UIControlEventTouchDragOutside      // 當(dāng)一次觸摸在控件窗口之外拖動(dòng)時(shí)乞娄。
UIControlEventTouchDragEnter        // 當(dāng)一次觸摸從控件窗口之外拖動(dòng)到內(nèi)部時(shí)
UIControlEventTouchDragExit         // 當(dāng)一次觸摸從控件窗口內(nèi)部拖動(dòng)到外部時(shí)瞬逊。
UIControlEventTouchUpInside         // 所有在控件之內(nèi)觸摸抬起事件
UIControlEventTouchUpOutside        // 所有在控件之外觸摸抬起事件(點(diǎn)觸必須開(kāi)始與控件內(nèi)部才會(huì)發(fā)送通知)。
UIControlEventTouchCancel           // 所有觸摸取消事件仪或,即一次觸摸因?yàn)榉派狭颂嗍种付蝗∠纺鳎蛘弑簧湘i或者電話呼叫打斷。

UIControlEventValueChanged          // 當(dāng)控件的值發(fā)生改變時(shí)范删,發(fā)送通知蕾域。用于滑塊、分段控件瓶逃、以及其他取值的控件束铭。你可以配置滑塊控件何時(shí)發(fā)送通知,在滑塊被放下時(shí)發(fā)送厢绝,或者在被拖動(dòng)時(shí)發(fā)送。

UIControlEventEditingDidBegin       // 當(dāng)文本控件中開(kāi)始編輯時(shí)發(fā)送通知
UIControlEventEditingChanged        // 當(dāng)文本控件中的文本被改變時(shí)發(fā)送通知带猴。
UIControlEventEditingDidEnd         // 當(dāng)文本控件中編輯結(jié)束時(shí)發(fā)送通知昔汉。
UIControlEventEditingDidEndOnExit   // 當(dāng)文本控件內(nèi)通過(guò)按下回車(chē)鍵(或等價(jià)行為)結(jié)束編輯時(shí),發(fā)送通知。

UIControlEventAllTouchEvents        // 通知所有觸摸事件靶病。
UIControlEventAllEditingEvents      // 通知所有關(guān)于文本編輯的事件会通。
UIControlEventApplicationReserved   // range available for application use
UIControlEventSystemReserved        // range reserved for internal framework use

UIControlEventAllEvents             // 通知所有事件
最后編輯于
?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請(qǐng)聯(lián)系作者
  • 序言:七十年代末,一起剝皮案震驚了整個(gè)濱河市娄周,隨后出現(xiàn)的幾起案子涕侈,更是在濱河造成了極大的恐慌,老刑警劉巖煤辨,帶你破解...
    沈念sama閱讀 216,402評(píng)論 6 499
  • 序言:濱河連續(xù)發(fā)生了三起死亡事件裳涛,死亡現(xiàn)場(chǎng)離奇詭異,居然都是意外死亡众辨,警方通過(guò)查閱死者的電腦和手機(jī)端三,發(fā)現(xiàn)死者居然都...
    沈念sama閱讀 92,377評(píng)論 3 392
  • 文/潘曉璐 我一進(jìn)店門(mén),熙熙樓的掌柜王于貴愁眉苦臉地迎上來(lái)鹃彻,“玉大人郊闯,你說(shuō)我怎么就攤上這事≈胫辏” “怎么了团赁?”我有些...
    開(kāi)封第一講書(shū)人閱讀 162,483評(píng)論 0 353
  • 文/不壞的土叔 我叫張陵,是天一觀的道長(zhǎng)谨履。 經(jīng)常有香客問(wèn)我然痊,道長(zhǎng),這世上最難降的妖魔是什么屉符? 我笑而不...
    開(kāi)封第一講書(shū)人閱讀 58,165評(píng)論 1 292
  • 正文 為了忘掉前任剧浸,我火速辦了婚禮,結(jié)果婚禮上矗钟,老公的妹妹穿的比我還像新娘唆香。我一直安慰自己,他們只是感情好吨艇,可當(dāng)我...
    茶點(diǎn)故事閱讀 67,176評(píng)論 6 388
  • 文/花漫 我一把揭開(kāi)白布躬它。 她就那樣靜靜地躺著,像睡著了一般东涡。 火紅的嫁衣襯著肌膚如雪冯吓。 梳的紋絲不亂的頭發(fā)上,一...
    開(kāi)封第一講書(shū)人閱讀 51,146評(píng)論 1 297
  • 那天疮跑,我揣著相機(jī)與錄音组贺,去河邊找鬼。 笑死祖娘,一個(gè)胖子當(dāng)著我的面吹牛失尖,可吹牛的內(nèi)容都是我干的。 我是一名探鬼主播,決...
    沈念sama閱讀 40,032評(píng)論 3 417
  • 文/蒼蘭香墨 我猛地睜開(kāi)眼掀潮,長(zhǎng)吁一口氣:“原來(lái)是場(chǎng)噩夢(mèng)啊……” “哼菇夸!你這毒婦竟也來(lái)了?” 一聲冷哼從身側(cè)響起庄新,我...
    開(kāi)封第一講書(shū)人閱讀 38,896評(píng)論 0 274
  • 序言:老撾萬(wàn)榮一對(duì)情侶失蹤,失蹤者是張志新(化名)和其女友劉穎人断,沒(méi)想到半個(gè)月后吭从,有當(dāng)?shù)厝嗽跇?shù)林里發(fā)現(xiàn)了一具尸體涩金,經(jīng)...
    沈念sama閱讀 45,311評(píng)論 1 310
  • 正文 獨(dú)居荒郊野嶺守林人離奇死亡,尸身上長(zhǎng)有42處帶血的膿包…… 初始之章·張勛 以下內(nèi)容為張勛視角 年9月15日...
    茶點(diǎn)故事閱讀 37,536評(píng)論 2 332
  • 正文 我和宋清朗相戀三年,在試婚紗的時(shí)候發(fā)現(xiàn)自己被綠了将鸵。 大學(xué)時(shí)的朋友給我發(fā)了我未婚夫和他白月光在一起吃飯的照片顶掉。...
    茶點(diǎn)故事閱讀 39,696評(píng)論 1 348
  • 序言:一個(gè)原本活蹦亂跳的男人離奇死亡痒筒,死狀恐怖簿透,靈堂內(nèi)的尸體忽然破棺而出老充,到底是詐尸還是另有隱情蚂维,我是刑警寧澤虫啥,帶...
    沈念sama閱讀 35,413評(píng)論 5 343
  • 正文 年R本政府宣布,位于F島的核電站评雌,受9級(jí)特大地震影響景东,放射性物質(zhì)發(fā)生泄漏斤吐。R本人自食惡果不足惜和措,卻給世界環(huán)境...
    茶點(diǎn)故事閱讀 41,008評(píng)論 3 325
  • 文/蒙蒙 一、第九天 我趴在偏房一處隱蔽的房頂上張望贫母。 院中可真熱鬧,春花似錦伪冰、人聲如沸靠柑。這莊子的主人今日做“春日...
    開(kāi)封第一講書(shū)人閱讀 31,659評(píng)論 0 22
  • 文/蒼蘭香墨 我抬頭看了看天上的太陽(yáng)梢杭。三九已至武契,卻和暖如春咒唆,著一層夾襖步出監(jiān)牢的瞬間,已是汗流浹背浸船。 一陣腳步聲響...
    開(kāi)封第一講書(shū)人閱讀 32,815評(píng)論 1 269
  • 我被黑心中介騙來(lái)泰國(guó)打工躺盛, 沒(méi)想到剛下飛機(jī)就差點(diǎn)兒被人妖公主榨干…… 1. 我叫王不留周叮,地道東北人。 一個(gè)月前我還...
    沈念sama閱讀 47,698評(píng)論 2 368
  • 正文 我出身青樓界斜,卻偏偏與公主長(zhǎng)得像仿耽,于是被迫代替她去往敵國(guó)和親项贺。 傳聞我的和親對(duì)象是個(gè)殘疾皇子,可洞房花燭夜當(dāng)晚...
    茶點(diǎn)故事閱讀 44,592評(píng)論 2 353

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

  • 前言:UI控件整理之UIButton 一奕删、顯示圖片(復(fù)選框) UIButton *button = [UIButt...
    心如止水的魚(yú)閱讀 275評(píng)論 0 0
  • 一個(gè)UIButton的實(shí)例變量熟掂, 使一個(gè)按鈕(button)在觸摸屏上生效华畏。一個(gè)按鈕監(jiān)聽(tīng)觸摸事件,當(dāng)被點(diǎn)擊時(shí)亡笑,給目...
    wushuputi閱讀 1,500評(píng)論 0 1
  • 概述 UIButton的父類(lèi)是UIControl侣夷,UIControl的父類(lèi)是UIView,UIView的父類(lèi)是UI...
    guaker閱讀 2,791評(píng)論 1 9
  • 一晰甚、UITabBarController以其相關(guān)控件之間的關(guān)系 @interface UITabBarContro...
    西門(mén)淋雨閱讀 3,077評(píng)論 0 1
  • 在宿舍大家常感嘆的一句話就是厕九,“哎蓖捶,一天就過(guò)去···哎,一個(gè)星期又過(guò)去了···哎扁远,一個(gè)月又過(guò)去了”俊鱼,不知不覺(jué)...
    小風(fēng)竹閱讀 345評(píng)論 0 0