首先。創建一個系統類的分類。比如view
Method layoutSubviews = class_getInstanceMethod(self, @selector(layoutSubviews));
Method sd_autolayout = class_getInstanceMethod(self, @selector(fhf_autolayout));
method_exchangeImplementations(layoutSubviews, sd_autolayout);
上面三行的效果。就是讓fhf_autolayout替換系統的layoutSubviews方法
但要注意的是這三行要在layoutsubviews方法調用之前調用。
+ (void)load
{
static dispatch_once_t onceToken;
dispatch_once(&onceToken, ^{
Method layoutSubviews = class_getInstanceMethod(self, @selector(layoutSubviews));
Method sd_autolayout = class_getInstanceMethod(self, @selector(sd_autolayout));
method_exchangeImplementations(layoutSubviews, sd_autolayout);
});
}