前言
项目开发中最好在前期就做好适配工作,但是如果没做的话或者是接手老的项目的话怎么办呢?我这里提供了两个方法让你在这些情况下能快速的适配屏幕。
布局适配:
先定义好宏:
#define kSizeScale(size) (size * (kScreenWidth / 375.0))
使用Xcode的替换功能
WechatIMG4.jpeg
举个栗子,如果使用的是Masonry自动布局:
.offset\((-?[1-9]\d)\) // 正、负整数
.offset\(kSizeScale($1)\)
字体大小适配:
使用runtime
@implementation UIFont (Extension)
+ (void)load {
SEL originalSelector = @selector(systemFontOfSize:);
SEL swizzledSelector = @selector(swizzle_systemFontOfSize:);
Method originalMethod = class_getClassMethod(self, originalSelector);
Method swizzledMethod = class_getClassMethod(self, swizzledSelector);
BOOL didAdded = class_addMethod(objc_getMetaClass([NSStringFromClass([self class]) UTF8String]),
originalSelector,
method_getImplementation(swizzledMethod),
method_getTypeEncoding(swizzledMethod));
if (didAdded) {
class_replaceMethod(objc_getMetaClass([NSStringFromClass([self class]) UTF8String]),
swizzledSelector,
method_getImplementation(originalMethod),
method_getTypeEncoding(originalMethod));
} else {
method_exchangeImplementations(originalMethod, swizzledMethod);
}
}
#pragma mark - Swizzle
+ (UIFont *)swizzle_systemFontOfSize:(CGFloat)fontSize {
return [UIFont swizzle_systemFontOfSize:kSizeScale(fontSize)];
}
@end
如果还有其他的方法,欢迎补充交流~
网友评论