iOS10字體展示不開問題及其他問題匯總(見相關(guān)鏈接)

iOS10字體寬度比之前多一個(gè)像素,高度不變,這個(gè)是個(gè)坑,需要注意一下!

這個(gè)問題會(huì)導(dǎo)致有些本來好的地方,到了iOS10就展示不開了。這里使用runtime做一個(gè)統(tǒng)一的處理。

#import "UIFont+MyFont.h"

#import@implementation UIFont (MyFont)

/**

*runtime注冊(cè)方法替換

*/

+(void)load{

//只執(zhí)行一次這個(gè)方法

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 設(shè)置字體

return [UIFont fontWithName:fontString size:fontSize];

}

@end


寫在最后:

Runtime是實(shí)現(xiàn)OC動(dòng)態(tài)化的核心c庫,Runtime不是用來裝逼的,理解并合理運(yùn)用,會(huì)有出乎意料的效果。

最后編輯于
?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請(qǐng)聯(lián)系作者
【社區(qū)內(nèi)容提示】社區(qū)部分內(nèi)容疑似由AI輔助生成,瀏覽時(shí)請(qǐng)結(jié)合常識(shí)與多方信息審慎甄別。
平臺(tái)聲明:文章內(nèi)容(如有圖片或視頻亦包括在內(nèi))由作者上傳并發(fā)布,文章內(nèi)容僅代表作者本人觀點(diǎn),簡書系信息發(fā)布平臺(tái),僅提供信息存儲(chǔ)服務(wù)。

相關(guān)閱讀更多精彩內(nèi)容

  • 一、需求背景介紹 最近在梳理項(xiàng)目是發(fā)現(xiàn),針對(duì)xib創(chuàng)建的控件字體大小使用了runtime替換initWithCod...
    Joshua520閱讀 2,388評(píng)論 0 2
  • 轉(zhuǎn)至元數(shù)據(jù)結(jié)尾創(chuàng)建: 董瀟偉,最新修改于: 十二月 23, 2016 轉(zhuǎn)至元數(shù)據(jù)起始第一章:isa和Class一....
    40c0490e5268閱讀 2,106評(píng)論 0 9
  • Runtime簡介runtime顧名思義就是運(yùn)行時(shí),OC就是運(yùn)行時(shí)機(jī)制,其中最主要是消息機(jī)制。對(duì)于C語言,函數(shù)的調(diào)...
    Joshua520閱讀 314評(píng)論 0 0
  • 本文轉(zhuǎn)載自:http://yulingtianxia.com/blog/2014/11/05/objective-...
    ant_flex閱讀 893評(píng)論 0 1
  • iOS開發(fā)里頭,常用的設(shè)置字體方式是使用UIFont的systemFontOfSize這個(gè)Class Method...
    王憲嶺閱讀 1,951評(píng)論 0 2

友情鏈接更多精彩內(nèi)容