+ (void)load{
Method imp = class_getInstanceMethod([self class], @selector(initWithCoder:));
Method myImp = class_getInstanceMethod([self class], @selector(myInitWithCoder:));
method_exchangeImplementations(imp, myImp);
}
//保证程序运行,分类加载时自动执行,交换方法指针
- (id)myInitWithCoder:(NSCoder*)aDecode{
//该方法是函数指针已经交换后调用,实际上调用的是[selfinitWithCoder:]方法
[selfmyInitWithCoder:aDecode];
if (self) {
//部分不像改变字体的把tag值设置成123跳过
if(self.tag !=123){
CGFloat fontSize =self.font.pointSize;
self.font = [UIFontsystemFontOfSize:fontSize*SizeScale];
}
}
returnself;
}
#import <UIKit/UIKit.h>
#import <objc/runtime.h>
/**
* 按钮
*/
@interface UIButton (MyFont)
@end
/**
* Label
*/
@interface UILabel (MyFont)
@end
//主要代码 分类UIButton(MyFont).m文件
#import "UIButton+MyFont.h"
//不同设备的屏幕比例(当然倍数可以自己控制)当前为等比例缩放
#define SizeScale ((g_screenHeight > 568) ? g_screenHeight/568 :1)
@implementation UIButton (MyFont)
+ (void)load{
Method imp =class_getInstanceMethod([selfclass], @selector(initWithCoder:));
Method myImp =class_getInstanceMethod([selfclass], @selector(myInitWithCoder:));
method_exchangeImplementations(imp, myImp);
}
- (id)myInitWithCoder:(NSCoder*)aDecode{
[selfmyInitWithCoder:aDecode];
if (self) {
//部分不想改变字体的把tag值设置成123跳过
if(self.titleLabel.tag != 123){
CGFloat fontSize =self.titleLabel.font.pointSize;
self.titleLabel.font = [UIFontsystemFontOfSize:fontSize*SizeScale];
}
}
returnself;
}
@end
@implementation UILabel (MyFont)
+ (void)load{
Method imp =class_getInstanceMethod([selfclass], @selector(initWithCoder:));
Method myImp =class_getInstanceMethod([selfclass], @selector(myInitWithCoder:));
method_exchangeImplementations(imp, myImp);
}
- (id)myInitWithCoder:(NSCoder*)aDecode{
[selfmyInitWithCoder:aDecode];
if (self) {
//部分不像改变字体的把tag值设置成123跳过
if(self.tag !=123){
CGFloat fontSize =self.font.pointSize;
self.font = [UIFontsystemFontOfSize:fontSize*SizeScale];
}
}
returnself;
}
@end