iOS如何在后期快速适配屏幕

前言

项目开发中最好在前期就做好适配工作,但是如果没做的话或者是接手老的项目的话怎么办呢?我这里提供了两个方法让你在这些情况下能快速的适配屏幕。

布局适配:

先定义好宏:

#define kSizeScale(size)        (size * (kScreenWidth / 375.0))

使用Xcode的替换功能


iOS如何在后期快速适配屏幕_第1张图片
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

如果还有其他的方法,欢迎补充交流~

你可能感兴趣的:(iOS如何在后期快速适配屏幕)