对于runtime, 大家估计都不会太陌生,今天我就来说一个关于它的使用实例:
实现UITextfield文字适配, 其核心思想就是替换系统方法。
首先我们要创建一个延展类:
UITextField+HMFontFit.h
实现代码在UITextField+HMFontFit.m 中
// 屏幕比例
#define SizeScale ((SCREEN_H == 667) ? 1 : SCREEN_H/667)
@implementation UITextField (HMFontFit)
+ (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{
[self myInitWithCoder:aDecode];
if (self) {
//部分不像改变字体的 把tag值设置成333跳过
if(self.tag != 333){
CGFloat fontSize = self.font.pointSize;
self.font = [UIFont systemFontOfSize:fontSize*SizeScale];
}
}
return self;
}
这样就可以简单的实现不同屏幕上面,UITextfield的文字大小适配了!希望可以帮到大家,谢谢!