解决IOS10字体适配问题(下)

作者: sma11case | 来源:发表于2016-09-21 10:44 被阅读1835次

上一篇 解决IOS10字体适配问题(上) 讲解了纯代码布局的解决方案, 但在这XIB泛滥的时代, 必须把XIB也解决一下, 嘿嘿

严重警告!!! 以下代码会直接修改你的代码文件, 测试前请务必备份!!!!!

首先你需要一个强大的功能库, 来自鄙人的代码垃圾堆, https://github.com/qokelate/sma11caseA, 然后在OSX中运行如下代码, 顶多也就4-5秒, 一份完全兼容的XIB就诞生了

+ (void)fix_ios10_xib
{
    NSString *path = @"/Users/xxx/xxx/xxx/xxx/sma11case/code/xxxxxx";
    
    [NSFM enumFilesWithPath:path block:^BOOL(NSString *dirPath, NSString *fileName, BOOL isDir) {
        if (isDir) return YES;
        
        if (NO == [fileName hasSuffix:@"xib"]
            && NO == [fileName hasSuffix:@".nib"]
            && NO == [fileName hasSuffix:@".storyboard"]) return YES;
        
        NSString *file = [NSString stringWithFormat:@"%@/%@", dirPath, fileName];
        NSMutableString *code = [NSMutableString stringWithContentsOfFile:file encoding:NSUTF8StringEncoding error:NULL];
        
        MLog(@"process: %@", file);
        
        NSArray *fonts = nil;
        do{
            fonts = [code regexpMatchResults:@" pointSize=\"[\\d\\.]+\""];
            if (0 == fonts.count) break;
            
            NSTextCheckingResult *exp = fonts.firstObject;
            NSString *line = [code substringWithRange:exp.range];
            double weight = [line regexpFirstMatch:@"\\d+"].doubleValue;
            double nweight = weight * 17.0 / 17.5;
            NSString *nline = [NSString stringWithFormat:@" pointSize=\"%.1lf<sma11caseFont>\"", nweight];
            [code replaceCharactersInRange:exp.range withString:nline];
            MLog(@"%@ => %@", line, nline);
            BreakPointHere;
        }while (fonts.count);
        
        [code replaceOccurrencesOfString:@"<sma11caseFont>" withString:@"" options:0 range:NSMakeRange(0, code.length)];
        [code writeToFile:file atomically:YES encoding:NSUTF8StringEncoding error:NULL];
        
        BreakPointHere;
        return YES;
    }];
}

相关文章

  • 解决IOS10字体适配问题(下)

    上一篇 解决IOS10字体适配问题(上) 讲解了纯代码布局的解决方案, 但在这XIB泛滥的时代, 必须把XIB也解...

  • Xcode8 和iOS10 做APNS适配的一些坑

    iOS10已经发了,最近发现App在iOS10上有一些问题,主要是iOS10的字体变了,一些Label要做适配。还...

  • iOS 10适配

    随着iOS10的发布,App的适配成为大家迫切需要解决的问题,下面总结了一些关于iOS10适配需要注意的问题。 1...

  • 解决IOS10字体适配问题(上)

    解决升级IOS10后由于字体的点数改变导致部分布局出现显示不全(显示为 ... )的情况 首先, 咱们先解决纯代码...

  • ios 10.3

    Xcode8 及iOS10适配问题汇总 上点干货,目前得知的一些bug解决汇总: iOS10相册相机闪退bug h...

  • iOS 10 的适配问题

    前言 随着iOS10发布的临近,大家的App都需要适配iOS10,下面是我总结的一些关于iOS10适配方面的问题,...

  • iOS10 适配总结

    先整理一下iOS10适配内容 1、iOS 10 版本适配问题 1.系统判断方法失效2.隐私数据访问问题3.UICo...

  • 简单解决iOS10适配问题

    随着iOS10发布的临近,大家的App都需要适配iOS10,下面是我总结的一些关于iOS10适配方面的问题,如果有...

  • iOS 10 的适配问题

    随着iOS10发布的临近,大家的App都需要适配iOS10,下面是我总结的一些关于iOS10适配方面的问题,如果有...

  • iOS10的适配问题

    随着iOS10发布的临近,大家的App都需要适配iOS10,下面是我总结的一些关于iOS10适配方面的问题,如果有...

网友评论

  • zclongjie:大神,再请教一个问题。
    ios10 自带输入法,输入两个拼音时,不显示汉字,显示....求解这个问题如何解决

本文标题:解决IOS10字体适配问题(下)

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