En travaillant sur une mise à jour de mon application, je remarque que je reçois des tonnes d'avertissements dans le journal lors de l'exécution de l'application dans Xcode 11.2 sur IOS13.
Remarque CoreText: le nom demandé par le client ".SFUI-Regular", il obtiendra TimesNewRomanPSMT plutôt que la police voulue. Tous les accès aux polices de l'interface utilisateur du système doivent se faire via des API appropriées telles que CTFontCreateUIFontForLanguage () ou + [UIFont systemFontOfSize:].
J'ai fouillé un peu et j'ai trouvé cette citation de la WWDC:
Comme mentionné dans de nombreuses sessions de la WWDC, les noms de police à préfixe de point ne doivent pas être utilisés directement.
J'utilise moi-même presque exclusivement IB et nibs pour définir des polices pour les champs de texte, etc., et il n'y a aucune référence à "SFUI-Regular" dans mon code nulle part, donc je ne sais pas comment trouver la raison réelle de ces avertissements (j'ai quelque chose comme 20-30 lignes de ceux-ci dans les journaux).
Quelqu'un a-t-il des conseils sur la façon de savoir d'où vient l'avertissement et comment le corriger?
Pour moi, il s'avère que c'était une bibliothèque tierce qui n'a pas été mise à jour depuis un moment qui était le coupable.
J'ai mis un point d'arrêt comme suggéré par l'utilisateur clatt et trouvé la source. Dans mon cas, c'était TOMSMorphingLabel .
Il y a une autre sortie dans la console, vous pouvez essayer d'ajouter un point d'arrêt symbolique
Remarque CoreText: définissez un point d'arrêt sur CTFontLogSystemFontNameRequest à déboguer.
J'ai commencé à rencontrer cet avertissement dans la console à partir de Xcode 11, avec des cibles MacOS et iOS.
Vous recevrez ".SFUI-Regular" de UIFont.systemFont(ofSize: X).fontName
. L'avertissement se produira alors si vous essayez d'instancier à l'aide de UIFont(name: fontName, size: size)
.
Dans mon cas, je laisse l'utilisateur personnaliser la police d'affichage, mais la valeur par défaut était ".SFUI-Regular", j'ai donc changé cela en "TimesNewRomanPSMT"
let defaultFont = UIFont.systemFont(ofSize: X).fontName
// replace with
let defaultFont = "TimesNewRomanPSMT"
UIFont(name: defaultFont, size: size)
Ayant le même problème et aucune référence à la police préfixée par points dans mon code non plus. Définir un point d'arrêt symbolique mais sans aucune utilité
let fontCT = CTFontCreateUIFontForLanguage(.label, fontSize as CGFloat, nil)
attrStr.addAttribute(.font, value: fontCT as Any, range: NSMakeRange(0, text.count))
solution pour le problème uifont pour ios 13