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

17

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 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?

Mathias
la source

Réponses:

6

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.

cliquetis
la source
Oui, définissez ce point d'arrêt symbolique. Quand il casse, consultez votre pile d'appels. Vous verrez alors quel est le coupable. Pour moi, un logiciel tiers.
PDG
@PDG Que faisait exactement le logiciel tiers?
Kaunteya
5

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)
gheclipse
la source
2

Ayant le même problème et aucune référence à la police à préfixe de point dans mon code non plus. Définir un point d'arrêt symbolique mais sans aucune utilité

Tony Law
la source
2
Même problème ici, dans une application macOS. Je commence à soupçonner un bug du SDK?
Jorge Leandro Perez
J'ai tracé la mienne à une ancienne version d'un pod que j'utilise.
Tony Law
6
Pour mémoire, j'ai reproduit ce problème dans un projet macOS vide, sans dépendances externes et seulement 2 lignes de code. Le ticket d'assistance technique soumis, vous tiendra au courant, mesdames et messieurs
Jorge Leandro Perez
1
@Klaas s'excuse d'être en retard! OUI ... c'est la réponse officielle que j'ai reçue, grâce au support technique:
Jorge Leandro Perez
1
Regarding the error mesage shown in your video, I view it as a system bug because I don’t see any of your code requesting “.AppleColorEmojiUI” – If your real app indeed does that, you should follow the message to correct it. Other than that, I don’t have anything worth to mentioning. (Et ils n'ont rien ajouté de plus .... "bug système")
Jorge Leandro Perez
0

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 .

Mathias
la source
0
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

Jagveer Singh
la source