美文网首页
iOS如何在后期快速适配屏幕

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

作者: 番茄鸡蛋汤圆 | 来源:发表于2017-08-11 11:45 被阅读0次
    前言

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

    布局适配:

    先定义好宏:

    #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
    

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

    相关文章

      网友评论

          本文标题:iOS如何在后期快速适配屏幕

          本文链接:https://www.haomeiwen.com/subject/saelrxtx.html