web-dev-qa-db-fra.com

Comment puis-je trouver la source de cet avertissement de coretexte lié aux polices dans IOS13?

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?

17
Mathias

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 .

0
Mathias

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.

5
clatt

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)
4
gheclipse

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é

1
Tony Law
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

0
Jagveer Singh