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?

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.


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)

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é


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 .


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

En utilisant notre site, vous reconnaissez avoir lu et compris notre politique liée aux cookies et notre politique de confidentialité.
Licensed under cc by-sa 3.0 with attribution required.