1.在不同的手机上对应的字体大小可能不同,一般的来说在 iphone 4 5 6的手机上的字体是一样大小,在6P上的字体是4 5 6上的1.5倍,
下面进行label和button的字体适配
1.先创建label的延展
#import <UIKit/UIKit.h>
#import <objc/runtime.h>
@interface UILabel (DXFont)
@end
#import "UILabel+DXFont.h"
@implementation UILabel (DXFont)
+ (void)load{
//利用running time运行池的方法在程序启动的时候把两个方法替换 适用Xib建立的label
Method imp = class_getInstanceMethod([self class], @selector(initWithCoder:));
Method myImp = class_getInstanceMethod([self class], @selector(myInitWithCoder:));
method_exchangeImplementations(imp, myImp); //交换方法
}
- (id)myInitWithCoder:(NSCoder*)aDecode{
[self myInitWithCoder:aDecode];
if (self) {
//部分不像改变字体的 把tag值设置成LabelFontSize值的跳过
if (IS_IPHONE_6P) {
if(self.tag != LabelFontSize) {
CGFloat fontSize = self.font.pointSize;
self.font = [UIFont systemFontOfSize:fontSize*1.5];
}
}
}
return self;
}
2.button的实现
#import <UIKit/UIKit.h>
#import <objc/runtime.h>
@interface UIButton (DXFont)
@end
#import "UIButton+DXFont.h"
@implementation UIButton (DXFont)
+ (void)load{
//利用running time运行池的方法在程序启动的时候把两个方法替换 适用Xib建立的label
Method imp = class_getInstanceMethod([self class], @selector(initWithCoder:));
Method myImp = class_getInstanceMethod([self class], @selector(myInitWithCoder:));
method_exchangeImplementations(imp, myImp); //交换方法
}
- (id)myInitWithCoder:(NSCoder*)aDecode{
[self myInitWithCoder:aDecode];
if (self) {
//部分不像改变字体的 把tag值设置成2016跳过
if (IS_IPHONE_6P) {
if(self.tag != 2016) {
CGFloat fontSize = self.titleLabel.font.pointSize;
self.titleLabel.font = [UIFont systemFontOfSize:fontSize*1.5];
}
}
}
return self;
}
如果要适配根据不同的屏幕使用不同的尺寸把后面的1.5 换成 下面定义的宏就可以啦
//不同设备的屏幕比例(当然倍数可以自己控制)
#define SizeScale ((IPHONE_HEIGHT > 568) ? IPHONE_HEIGHT/568 : 1)