Was bedeutet die Warnung "Automatische Anpassung der Schriftart erfordert die Verwendung eines dynamischen Textstils"?

96

Ich erhalte die folgende Warnung:

"Die automatische Anpassung der Schriftart erfordert die Verwendung eines dynamischen Textstils."

Screenshot hinzugefügt

Was ich die Warnung nicht loswerden kann ist an main.storyboard .

Ich habe alle überprüft UILabelin der Identity Inspectorsicherstellen , dass die „Automatische Anpassung Font“ nicht aktiviert ist.

K. Law
quelle
1
Ich vermute, dass "die automatische Anpassung der Schriftart die Verwendung eines dynamischen Textstils erfordert", wahrscheinlich um sie dynamisch anzupassen.
flach gedacht
7
Sie möchten eine dynamische Schriftart ("Body", "Headline", "Subhead") verwenden oder mit größerer Wahrscheinlichkeit aus- Automatically Adjusts Fontund einschalten Autoshrink.
Bshirley

Antworten:

53
  1. Öffnen Sie Ihr Storyboard als Quellcode
  2. Suchen Sie nach dem Schlüssel "adjustsFontForContentSizeCategory".
  3. Aktivieren Sie das Kontrollkästchen für dieses Objekt und deaktivieren Sie das Kontrollkästchen Dynamischer Typ im Schnittstellen-Generator.
Ayalcin
quelle
21
In meinem Fall habe ich diese Warnung, aber der adjustsFontForContentSizeCategorySchlüssel erscheint nicht im Quellcode.
Chris Prince
Ich denke, es funktioniert jetzt (Xcode 11), einfach auf die Warnung zu klicken und das beleidigende Etikett auszuwählen. (So ​​können Sie die Schritte des Quellcodes vermeiden)
Garafajon
@ChrisPrince, hast du das gelöst?
ScottyBlades
34

Ich habe gerade den Textstil in " Körper" geändert & Warning verschwindet" .

Es ist nur, weil es ein dynamischer Typ textStyle ist

Siehe Liste der vordefinierten unterstützten dynamischen Typen textStyle -

Geben Sie hier die Bildbeschreibung ein

Jack
quelle
1
Wenn Sie bodyes so ändern, dass es nicht mehr fett gedruckt werden kann.
Btrballin
31

Ich hatte das gleiche Problem. Selbst nachdem ich das Storyboard als Quelle geöffnet und den Schlüssel "adjustsFontForContentSizeCategory" entfernt hatte, speicherte und bereinigte ich das Projekt, das immer noch angezeigt werden würde.

Also dann ich:

  1. Das Projekt wurde bereinigt
  2. Geschlossener Xcode
  3. Der Inhalt des abgeleiteten Datenordners wurde gelöscht
  4. Xcode erneut geöffnet und neu erstellt

Es war weg. :) :)

Spilly
quelle
4
Schritt 1: Drücken Sie ⇧⌥⌘K, um das Projekt und die abgeleiteten Daten zu bereinigen.
Lassen
1
hmmm, ⇧⌥⌘K bereinigt den Build-Ordner in den abgeleiteten Daten der App. Es wird jedoch nicht der gesamte Ordner derivativeData gelöscht. Ist das genug? Oder wir machen den üblichen "xCode Voodoo Dance" wie oben beschrieben: D
Yaro
Voodoo Dance hat für mich gearbeitet. Ich hatte das gleiche Problem und auch für veraltete Push-Segues. Ich habe jeden Abschnitt und jedes Etikett manuell geändert, aber die Warnungen sind nicht verschwunden. Durch Entfernen des DerivedData-Ordners wurde das Problem behoben.
Danomatika
24

Es scheint ein Fehler in Xcode gewesen zu sein. Folgendes habe ich getan, um das Problem zu beheben:

  1. Ändern Sie die Schriftart in der Beschriftung, in der der Fehler angezeigt wurde, wie vorgeschlagen in einen dynamischen Typ
  2. Aktivieren Sie das Kontrollkästchen für "Schrift wird automatisch angepasst".
  3. Erstellen Sie das Projekt und führen Sie es aus (der Fehler verschwindet)
  4. Deaktivieren Sie das Kontrollkästchen "Schriftart automatisch anpassen"
  5. Ändern Sie die Schriftart auf die vorherige Einstellung zurück, die den Fehler verursacht hat
  6. Erstellen Sie das Projekt neu

Der Fehler ist immer noch weg.

K. Law
quelle
2
Genau. Doppelte und dreifache Überprüfung meiner Dateien und sogar Überprüfung von XML / Quelle - es war noch nicht da XCode besteht darauf (auch nach einer "Bereinigung"). Wie nervig.
Josh
4
I changed the font in the label that showed the error, to a dynamic type,- Ich kann keine Option sehen, die so aussieht, als wäre sie dynamic typein den Schriftarten enthalten. Vorschläge?
Chris Prince
Ich verwende jetzt die Systemschriftart. Ich habe in einigen Beschriftungen eine benutzerdefinierte Schriftart verwendet, was das Problem verursacht hat. Wenn Sie dynamische Schriftarten in Xcode googeln, finden Sie möglicherweise eine Liste anderer dynamischer Schriftarten. Ein wenig Forschung reicht weit. Viel Glück.
K. Law
3
Hi @ K.Law, danke für die Antwort, aber Xcode generiert mehrere gleiche Warnungen und alle Ansichten befinden sich im Intro.storyboard. Wenn ich auf Warnung geklickt habe, zeigt Xcode nur das Storyboard an, kein spezifisches Element.
Elia
17

Wenn das Kontrollkästchen "Schriftart automatisch anpassen" mit einer nicht dynamischen Schriftart aktiviert ist, wird diese Warnung angezeigt. Deaktivieren Sie entweder das Kontrollkästchen auf dem betreffenden Etikett oder verwenden Sie einen dynamischen Schrifttyp.

Geben Sie hier die Bildbeschreibung ein

Donovan König
quelle
3
In meinem Fall ist dieses Kontrollkästchen deaktiviert, aber ich erhalte die Warnung.
Chris Prince
20
Wie können Sie feststellen, ob Ihre Schriftart "nicht dynamisch" ist?
user664939
1
@ user664939 Nicht dynamische Schriftarten können Familie und Stil ändern. Dynamische Schriftarten können Familie und Stil nicht ändern. Es wird standardmäßig nach Größe erhalten. Sie können Familie und Stil über Storyboard -> Attributinspektor -> Schriftart festlegen.
sn86
5
@ user664939: Anstatt eine bestimmte Schriftart auszuwählen, wählen Sie eine Schriftart "Typ". Klicken Sie in der Dropdown-Liste Schriftart auf das Kästchen "T". Klicken Sie im folgenden Fenster auf die Pfeile rechts neben der Dropdown-Liste Schriftart. Wählen Sie einen "Textstil" aus der Liste unten. Informationen zu Punktgrößen usw. für jeden Textstil finden Sie im Abschnitt Visuelles Design, Typografie des HIG .
Leanne
8
  1. Öffnen Sie Ihr Storyboard und klicken Sie mit der rechten Maustaste auf das Storyboard im Datei-Navigator.

Geben Sie hier die Bildbeschreibung ein

  1. Suchen Sie nach (Befehl F) und löschen Sie Instanzen von adjustsFontForContentSizeCategory="YES"
ScottyBlades
quelle
1
In meinem Xcode (11.1) gibt es kein Feld "Schriftart automatisch anpassen". Ich habe alles andere versucht, nichts hat funktioniert, außer dies - mit 0 Stimmen. Thx
DrWhat