UIButton 設(shè)置高亮狀態(tài)的背景顏色

UIButton有普通、高亮、失能、選中四種狀態(tài),在公司項(xiàng)目開(kāi)發(fā)中,有時(shí)UI給按鈕的背景顏色值來(lái)區(qū)分普通和高亮狀態(tài),但是蘋果并沒(méi)有給我們提供設(shè)置普通和高亮狀態(tài)的背景顏色,我們可以利用KVO來(lái)實(shí)現(xiàn)按鈕普通狀態(tài)和高亮狀態(tài)的背景顏色,UIButton繼承于UIControl,UIControl有個(gè)highlighted屬性,我們只需要監(jiān)聽(tīng)這個(gè)屬性就能實(shí)現(xiàn)普通和高亮狀態(tài)下的背景顏色的切換。

1.首先,添加一個(gè)按鈕在界面上,我們先設(shè)置好普通和高亮狀態(tài)時(shí)的文字,還有圓角

    UIButton *button  = [[UIButton alloc] initWithFrame:CGRectMake(100, 100, 100, 40)];
    [button setTitle:@"normal" forState:UIControlStateNormal];
    [button setTitle:@"highlighted" forState:UIControlStateHighlighted];
    [button setBackgroundColor:[UIColor redColor]];
    button.layer.cornerRadius = 10.0f;
    button.layer.masksToBounds = YES;
    [self.view addSubview:button];

    // 添加觀察者方法
    [self addObserver:button];

2.添加觀察者

/**
 *  添加觀察者
 *
 *  @param button 需要設(shè)置的按鈕
 */
- (void)addObserver:(UIButton *)button {
    
    [button addObserver:self forKeyPath:@"highlighted" options:NSKeyValueObservingOptionNew context:nil];
}

3.接下來(lái)就是實(shí)現(xiàn)觀察者方法

- (void)observeValueForKeyPath:(NSString *)keyPath ofObject:(id)object change:(NSDictionary<NSString *,id> *)change context:(void *)context {
    
    UIButton *button = (UIButton *)object;
    if ([keyPath isEqualToString:@"highlighted"]) {
        if (button.highlighted) {
            [button setBackgroundColor:[UIColor blueColor]];
            return;
        }
        [button setBackgroundColor:[UIColor redColor]];
    }
}

這樣我們就能在不使用圖片的前提下,實(shí)現(xiàn)設(shè)置高亮和普通狀態(tài)下的背景顏色
看下具體的效果

button.gif

當(dāng)然,別忘了移除觀察者

最后編輯于
?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請(qǐng)聯(lián)系作者
【社區(qū)內(nèi)容提示】社區(qū)部分內(nèi)容疑似由AI輔助生成,瀏覽時(shí)請(qǐng)結(jié)合常識(shí)與多方信息審慎甄別。
平臺(tái)聲明:文章內(nèi)容(如有圖片或視頻亦包括在內(nèi))由作者上傳并發(fā)布,文章內(nèi)容僅代表作者本人觀點(diǎn),簡(jiǎn)書系信息發(fā)布平臺(tái),僅提供信息存儲(chǔ)服務(wù)。

相關(guān)閱讀更多精彩內(nèi)容

  • 對(duì)象繼承關(guān)系 UIButton 類本身定義繼承 UIControl ,描述了在 iOS 上所有用戶界面控件的常見(jiàn)基...
    獨(dú)木舟的木閱讀 3,952評(píng)論 0 3
  • 1,通過(guò)按鈕的事件來(lái)設(shè)置背景色 - (void)viewDidLoad {[superviewDidLoad];U...
    絲絲雨涼閱讀 693評(píng)論 0 0
  • 發(fā)現(xiàn) 關(guān)注 消息 iOS 第三方庫(kù)、插件、知名博客總結(jié) 作者大灰狼的小綿羊哥哥關(guān)注 2017.06.26 09:4...
    肇東周閱讀 15,704評(píng)論 4 61
  • 朱窗外等風(fēng)偏來(lái)梧桐雨聽(tīng)雨打殘荷云弄奇峰牧童橫笛款款走出這詩(shī)句 殘燭湘妃筆宣紙寫相思琥珀酒一杯淺酌低吟香消紅碎煙樹(shù)飄...
    淚花香閱讀 414評(píng)論 0 3
  • 單例模式(singleton pattern )是一種在開(kāi)發(fā)中經(jīng)常用到的設(shè)計(jì)模式。 模式定義 確保一個(gè)類僅有一個(gè)實(shí)...
    FX_SKY閱讀 562評(píng)論 0 0

友情鏈接更多精彩內(nèi)容