如何在IOS13中找到这个与字体相关的核心文本警告的来源?

Mat*_*ias 23 xcode objective-c core-text ios swift

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

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

我仔细研究了一下,从 WWDC 中找到了这句话:

正如在许多 WWDC 会议中提到的,不直接使用点前缀字体名称。

我自己几乎只使用 IB 和笔尖来设置文本字段等的字体,并且在我的代码中的任何地方都没有提到“SFUI-Regular”,所以我不确定如何找到这些警告的实际原因(我有日志中大约有 20-30 行)。

有没有人对我如何找到警告来自哪里以及如何解决它有任何提示?

小智 8

控制台还有一个输出,你可以尝试加一个符号断点

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


use*_*529 6

从 Xcode 11 开始,我开始在控制台中遇到此警告,同时使用 MacOS 和 iOS 目标。

您将收到来自 .SFUI-Regular 的“.SFUI-Regular” UIFont.systemFont(ofSize: X).fontName。如果您尝试使用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)
Run Code Online (Sandbox Code Playgroud)