如何在IOS13中找到此字体相关的coretext警告的来源?

在更新我的应用程序时,我注意到在IOS13上的Xcode 11.2中运行该应用程序时,我在日志中收到大量警告。

  

CoreText注意:客户端请求名称“ .SFUI-Regular”,它将获得   TimesnewRomanPSMT而不是预期的字体。所有系统UI字体   访问应通过适当的API进行,例如   CTFontCreateUIFontForLanguage()或+ [UIFont systemFontOfSize:]。

我挖了一下,发现了WWDC的这句话:

  

正如在许多WWDC会话中提到的那样,点前缀字体名称是   请勿直接使用。

我本人几乎只使用IB和笔尖为文本字段等设置字体,并且我的代码中均未引用“ SFUI-Regular”,因此我不确定如何找到这些警告的实际原因(我在日志中有20-30行这样的内容)。

有人对我如何找到警告的来源以及如何解决它有任何提示吗?

shala1204 回答:如何在IOS13中找到此字体相关的coretext警告的来源?

控制台中还有另一个输出,您可以尝试添加符号断点

  

CoreText注意:在CTFontLogSystemFontNameRequest上设置一个断点以进行调试。

,

我从Xcode 11开始,在带有MacOS和iOS目标的控制台中开始遇到此警告。

您将从UIFont.systemFont(ofSize: X).fontName收到“ .SFUI-Regular”。 如果尝试使用UIFont(name: fontName,size: size)进行实例化,则会出现警告。

在我的情况下,我让用户自定义显示字体,但默认值为“ .SFUI-Regular”,因此我将其更改为“ TimesNewRomanPSMT”

let defaultFont = UIFont.systemFont(ofSize: X).fontName

// replace with
let defaultFont = "TimesNewRomanPSMT"

UIFont(name: defaultFont,size: size)
,

同样的问题,我的代码中也没有引用点缀字体。设置一个符号断点,但没有任何用处

,

对我来说,事实证明这是第三方库,但是一段时间以来没有更新过。

根据用户的建议,我设置了一个断点并找到了源。在我的情况下是TOMSMorphingLabel

,
let fontCT = CTFontCreateUIFontForLanguage(.label,fontSize as CGFloat,nil)
attrStr.addAttribute(.font,value: fontCT as Any,range: NSMakeRange(0,text.count))

适用于ios 13的uifont问题的解决方案

本文链接:https://www.f2er.com/3161492.html

大家都在问