美文网首页
iOS10字体展示不开问题及其他问题汇总(见相关链接)

iOS10字体展示不开问题及其他问题汇总(见相关链接)

作者: 踩了个铺 | 来源:发表于2016-09-19 10:40 被阅读133次

    iOS10字体宽度比之前多一个像素,高度不变,这个是个坑,需要注意一下!

    这个问题会导致有些本来好的地方,到了iOS10就展示不开了。这里使用runtime做一个统一的处理。

    #import "UIFont+MyFont.h"

    #import@implementation UIFont (MyFont)

    /**

    *runtime注册方法替换

    */

    +(void)load{

    //只执行一次这个方法

    static dispatch_once_t onceToken;

    dispatch_once(&onceToken, ^{

    Class class = [self class];

    // When swizzling a class method, use the following:

    //获取替换前的类方法

    Method instance_eat =

    class_getClassMethod(class, @selector(systemFontOfSize:));

    //获取替换后的类方法

    Method instance_notEat =

    class_getClassMethod(self, @selector(RoadSystemFontOfSize:));

    //然后交换类方法

    method_exchangeImplementations(instance_eat, instance_notEat);

    });

    }

    +(UIFont *)RoadSystemFontOfSize:(CGFloat)fontSize{

    if ([[[UIDevice currentDevice] systemVersion] floatValue]>=10)  {

    fontSize = fontSize * 0.95;

    }

    UIFont *newFont = [ UIFont preferredFontForTextStyle : UIFontTextStyleBody ];

    UIFontDescriptor *ctfFont = newFont.fontDescriptor ;

    NSString *fontString = [ctfFont objectForKey : @"NSFontNameAttribute"];

    //使用 fontWithName 设置字体

    return [UIFont fontWithName:fontString size:fontSize];

    }

    @end


    写在最后:

    Runtime是实现OC动态化的核心c库,Runtime不是用来装逼的,理解并合理运用,会有出乎意料的效果。

    相关文章

      网友评论

          本文标题:iOS10字体展示不开问题及其他问题汇总(见相关链接)

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