您好,欢迎来到二三四教育网。
搜索
您的当前位置:首页替换类函数

替换类函数

来源:二三四教育网

static IMP originIMP;

static id replacedMethod(id self,SEL _cmd, id view1, NSLayoutAttribute attr1,NSLayoutRelation relation,id view2,NSLayoutAttribute attr2

,CGFloat multiplier,CGFloat c)

{

//    NSAssert(multiplier != 0, @"error !!!1multiplier is 0");

NSLog(@"constraintWithItem:%@",self);

if (multiplier == 0) {

NSLog(@"error !!!1multiplier is 0");

}

id result = ((id(*)(id,SEL, id, NSLayoutAttribute,NSLayoutRelation,id,NSLayoutAttribute

,CGFloat,CGFloat))originIMP)(self,_cmd,view1,attr1,relation,view2,attr2,multiplier,c);

return result;

}

+(instancetype)replacedConstraintWithItem:(id)view1 attribute:(NSLayoutAttribute)attr1 relatedBy:(NSLayoutRelation)relation toItem:(nullable id)view2 attribute:(NSLayoutAttribute)attr2 multiplier:(CGFloat)multiplier constant:(CGFloat)c

{

//    NSAssert(multiplier != 0, @"error !!!1multiplier is 0");

NSLog(@"replacedConstraintWithItem:%@,multiplier:%f,attr1:%d,view2:%@",view1,multiplier,(int)attr1,view2);

if (multiplier == 0&&NSLayoutAttributeWidth!=attr1&&NSLayoutAttributeHeight!=attr1) {

NSLog(@"error !!!1multiplier is 0");

}

if (view2 == nil&&NSLayoutAttributeWidth!=attr1&&NSLayoutAttributeHeight!=attr1) {

NSLog(@"view2 is nil");

}

id result = ((id(*)(id,SEL, id, NSLayoutAttribute,NSLayoutRelation,id,NSLayoutAttribute

,CGFloat,CGFloat))originIMP)(self,_cmd,view1,attr1,relation,view2,attr2,multiplier,c);

return result;

}

#ifdef DEBUG

Method oriMethod = class_getClassMethod([NSLayoutConstraint class], @selector(constraintWithItem:attribute:relatedBy:toItem:attribute:multiplier:constant:));

originIMP = method_getImplementation(oriMethod);

//    originIMP = class_replaceMethod([NSLayoutConstraint class], @selector(constraintWithItem:attribute:relatedBy:toItem:attribute:multiplier:constant:), (IMP)replacedMethod, method_getTypeEncoding(method));

Method replacedMethod = class_getClassMethod([self class], @selector(replacedConstraintWithItem:attribute:relatedBy:toItem:attribute:multiplier:constant:));

method_exchangeImplementations(oriMethod, replacedMethod);

//originIMP = class_replaceMethod(objc_getMetaClass("NSLayoutConstraint"), @selector(constraintWithItem:attribute:relatedBy:toItem:attribute:multiplier:constant:), (IMP)replacedMethod, method_getTypeEncoding(oriMethod));

#endif

Copyright © 2019- how234.cn 版权所有 赣ICP备2023008801号-2

违法及侵权请联系:TEL:199 1889 7713 E-MAIL:2724546146@qq.com

本站由北京市万商天勤律师事务所王兴未律师提供法律服务