Wie kann ich die Quelle dieser schriftbezogenen Koretextwarnung in IOS13 finden?


17

Wenn ich an einem Update meiner App arbeite, stelle ich fest, dass beim Ausführen der App in Xcode 11.2 unter IOS13 unzählige Warnungen im Protokoll angezeigt werden.

CoreText-Hinweis: Der vom Client angeforderte Name ".SFUI-Regular" erhält TimesNewRomanPSMT anstelle der beabsichtigten Schriftart. Der Zugriff auf alle System-UI-Schriftarten sollte über geeignete APIs wie CTFontCreateUIFontForLanguage () oder + [UIFont systemFontOfSize:] erfolgen.

Ich habe ein bisschen herumgegraben und dieses Zitat von WWDC gefunden:

Wie in zahlreichen WWDC-Sitzungen erwähnt, dürfen Schriftnamen mit Punktpräfix nicht direkt verwendet werden.

Ich selbst verwende fast ausschließlich IB und Schreibfedern, um Schriftarten für Textfelder usw. festzulegen, und in meinem Code ist nirgendwo ein Verweis auf "SFUI-Regular" enthalten, daher bin ich mir nicht sicher, wie ich den tatsächlichen Grund für diese Warnungen finden kann (ich habe so etwas wie 20-30 Zeilen davon in den Protokollen).

Hat jemand Tipps, wie ich herausfinden kann, woher die Warnung kommt und wie ich sie beheben kann?

Antworten:


6

Es gibt eine weitere Ausgabe in der Konsole. Sie können versuchen, einen symbolischen Haltepunkt hinzuzufügen

CoreText-Hinweis: Legen Sie einen Haltepunkt für CTFontLogSystemFontNameRequest zum Debuggen fest.


Ja, setzen Sie diesen symbolischen Haltepunkt. Wenn es kaputt geht, überprüfen Sie Ihren Aufrufstapel. Sie werden dann sehen, was der Schuldige ist. Für mich Software von Drittanbietern.
PDG

@PDG Was genau hat die Software von Drittanbietern getan?
Kaunteya

5

Diese Warnung wurde in der Konsole ab Xcode 11 sowohl für MacOS- als auch für iOS-Ziele angezeigt.

Sie erhalten ".SFUI-Regular" von UIFont.systemFont(ofSize: X).fontName. Die Warnung wird dann angezeigt, wenn Sie versuchen, mithilfe von zu instanziieren UIFont(name: fontName, size: size).

In meinem Fall lasse ich den Benutzer die Anzeigeschrift anpassen, aber die Standardeinstellung war ".SFUI-Regular", daher habe ich diese in "TimesNewRomanPSMT" geändert.

let defaultFont = UIFont.systemFont(ofSize: X).fontName

// replace with
let defaultFont = "TimesNewRomanPSMT"

UIFont(name: defaultFont, size: size)

2

Ich habe das gleiche Problem und auch keinen Verweis auf eine Schriftart mit Punktpräfix in meinem Code. Setzen Sie einen symbolischen Haltepunkt, der jedoch nichts nützt


2
Gleiches Problem hier in einer macOS App. Ich fange an, einen SDK-Fehler zu vermuten.
Jorge Leandro Perez

Ich habe meine auf eine ältere Version eines Pods zurückgeführt, den ich verwende.
Tony Law

6
Ich habe dieses Problem in einem leeren MacOS-Projekt reproduziert, ohne externe Abhängigkeiten und nur mit 2 Codezeilen. Tech Support Ticket eingereicht, wird Sie auf dem Laufenden halten, meine Damen und Herren
Jorge Leandro Perez

1
@Klaas entschuldigt sich für die Verspätung! JA ... dies ist die offizielle Antwort, die ich durch den technischen Support erhalten habe:
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. (Und sie haben nichts weiter hinzugefügt ... "Systemfehler")
Jorge Leandro Perez

0

Für mich stellte sich heraus, dass es sich um eine Drittanbieter-Bibliothek handelte, die seit einiger Zeit nicht mehr aktualisiert wurde.

Ich habe einen Haltepunkt gesetzt, wie es der Benutzer vorgeschlagen hat, und die Quelle gefunden. In meinem Fall war es TOMSMorphingLabel .


0
let fontCT = CTFontCreateUIFontForLanguage(.label, fontSize as CGFloat, nil)
attrStr.addAttribute(.font, value: fontCT as Any, range: NSMakeRange(0, text.count))

lösung für uifont problem für ios 13

Durch die Nutzung unserer Website bestätigen Sie, dass Sie unsere Cookie-Richtlinie und Datenschutzrichtlinie gelesen und verstanden haben.
Licensed under cc by-sa 3.0 with attribution required.