字體大小適配-runtime
在開(kāi)發(fā)過(guò)程中, 我選擇的模擬器是7P, 當(dāng)我把模擬器改換成5的時(shí)候發(fā)現(xiàn)字體大的嚇人, 簡(jiǎn)直就是老年機(jī)那種恐怖大的字體, 所以這時(shí)候就需要做一下字體的適配了.
之前的愚蠢的做法是在每個(gè)有文字內(nèi)容的地方通過(guò)判斷屏幕寬度大小來(lái)適配字體的大小, 不但麻煩, 而且愚蠢... 所以這次在一個(gè)群里(群號(hào):139571656)看到群主Edison的一個(gè)demo, 使用runtime的方法來(lái)做的適配, 簡(jiǎn)單方便有效.
實(shí)現(xiàn)思想是在程序運(yùn)行的時(shí)候動(dòng)態(tài)修改系統(tǒng)方法systemFontOfSize:
, 跟設(shè)計(jì)圖上的字體大小按比例做適配;
首先需要?jiǎng)?chuàng)建一個(gè)UIFont的分類
自己UI設(shè)計(jì)原型圖的手機(jī)尺寸寬度
#define YourUIScreen 414
- 在
UIFont+runtime.m
文件中
#import "UIFont+runtime.h"
#import <objc/runtime.h>
@implementation UIFont (runtime)
+(void)load{
//獲取替換后的類方法
Method newMethod = class_getClassMethod([self class], @selector(adjustFont:));
//獲取替換前的類方法
Method method = class_getClassMethod([self class], @selector(systemFontOfSize:));
//然后交換類方法
method_exchangeImplementations(newMethod, method);
}
+(UIFont *)adjustFont:(CGFloat)fontSize{
UIFont *newFont=nil;
newFont = [UIFont adjustFont:fontSize * [UIScreen mainScreen].bounds.size.width/YourUIScreen];
return newFont;
}
@end