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

作者: sma11case | 来源:发表于2016-09-18 17:16 被阅读1610次

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

    首先, 咱们先解决纯代码布局问题,.................

    // 核心代码, 是否启用字体重定向, 呵呵!!
    #define UseFontManager 1UL
    
    #ifdef UseFontManager
    #define SysFont(x)   [UIFont sc_systemFontOfSize:(x)]
    #define BoldFont(x)  [UIFont sc_boldSystemFontOfSize:(x)]
    #else
    #define SysFont(x)   [UIFont systemFontOfSize:(x)]
    #define BoldFont(x)  [UIFont boldSystemFontOfSize:(x)]
    #endif
    
    @interface UIFont(sma11case_IOS)
    + (instancetype)sc_systemFontOfSize: (CGFloat)fontSize;
    + (instancetype)sc_boldSystemFontOfSize: (CGFloat)fontSize;
    @end
    
    static double gs_sysVer = 0.0;
    
    @implementation UIFont(sma11case_IOS)
    + (instancetype)sc_boldSystemFontOfSize: (CGFloat)fontSize
    {
        if (!gs_sysVer)
        {
            NSString *ver = [[UIDevice currentDevice].systemVersion regexpFirstMatch:@"^\\d+(\\.\\d+)*"];
            gs_sysVer = atof(ver.UTF8String);
        }
        
        if (gs_sysVer >= 10.0)
        {
            CGFloat p = fontSize * 17 / 17.5;
            MLog(@"convert bold font: %f => %f", fontSize, p);
            fontSize = p;
        }
        
        return [UIFont boldSystemFontOfSize:fontSize];
    }
    
    + (instancetype)sc_systemFontOfSize: (CGFloat)fontSize
    {
        if (!gs_sysVer)
        {
            NSString *ver = [[UIDevice currentDevice].systemVersion regexpFirstMatch:@"^\\d+(\\.\\d+)*"];
            gs_sysVer = atof(ver.UTF8String);
        }
        
        if (gs_sysVer >= 10.0)
        {
            CGFloat p = fontSize * 17 / 17.5;
            MLog(@"convert bold font: %f => %f", fontSize, p);
            fontSize = p;
        }
        
        return [UIFont systemFontOfSize:fontSize];
    }
    @end
    

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

    相关文章

      网友评论

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

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