首先。创建一个系统类的分类。比如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);
});
}