美文网首页
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