去掉UIButton的點(diǎn)擊時(shí)的高亮效果

利用runtime去掉UIButton的點(diǎn)擊時(shí)的高亮效果

.h

#import <UIKit/UIKit.h>

@interface UIButton (RemoveHighlightEffect)

@property (nonatomic, assign) BOOL removeHighlightEffect;

@end

.m

#import "UIButton+RemoveHighlightEffect.h"
#import <objc/runtime.h>

#define kRemoveHighlightEffect @"RemoveHighlightEffect"

@implementation UIButton (RemoveHighlightEffect)


+ (void)load{
    static dispatch_once_t onceToken;
    dispatch_once(&onceToken, ^{
        Class clazz = [self class];
        
        
        
        
        SEL originalSEL = @selector(setHighlighted:);
        SEL swizzledSEL = @selector(iw_setHighlighted:);
        
        
        Method originalMethod = class_getInstanceMethod(clazz, originalSEL);
        Method swizzledMethod = class_getInstanceMethod(clazz, swizzledSEL);
        
        
        //添加方法
        
        BOOL result = class_addMethod(clazz, swizzledSEL, method_getImplementation(swizzledMethod), method_getTypeEncoding(swizzledMethod));
        if (result) {
            class_replaceMethod(clazz, originalSEL, method_getImplementation(swizzledMethod), method_getTypeEncoding(swizzledMethod));
        }else{
            method_exchangeImplementations(originalMethod, swizzledMethod);
        }
    });
}


- (void)iw_setHighlighted:(BOOL)highlighted{
    if (!self.removeHighlightEffect) {
        //這句代碼代碼調(diào)用原來(lái)的方法
        [self iw_setHighlighted:highlighted];
    }
}



- (void)setRemoveHighlightEffect:(BOOL)removeHighlightEffect{
    objc_setAssociatedObject(self, kRemoveHighlightEffect, @(removeHighlightEffect), OBJC_ASSOCIATION_ASSIGN);
}

- (BOOL)removeHighlightEffect{
    return objc_getAssociatedObject(self, kRemoveHighlightEffect);
}

@end

#其實(shí)就是空實(shí)現(xiàn)setHighlighted:這個(gè)方法

?著作權(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)容

  • 1、通過(guò)CocoaPods安裝項(xiàng)目名稱項(xiàng)目信息 AFNetworking網(wǎng)絡(luò)請(qǐng)求組件 FMDB本地?cái)?shù)據(jù)庫(kù)組件 SD...
    陽(yáng)明AI閱讀 16,237評(píng)論 3 119
  • ——終歸要有行動(dòng) 想法再好,停留在心里,永遠(yuǎn)是想法;嘗試再無(wú)起色,因?yàn)樽兂闪诵袆?dòng),終歸邁出決定...
    簫音聲聲閱讀 243評(píng)論 0 0
  • 今天調(diào)整時(shí)間在下午兩點(diǎn)40到鄭州,不想讓助教等我,在地鐵上和現(xiàn)發(fā)助教簡(jiǎn)單聊了一下,卜芳姐不能來(lái)鄭州感到遺憾,...
    姚常春閱讀 264評(píng)論 0 1

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