Xcode 6 hat eine neue Funktion in den Schriftart und Schriftgrößen in UILabel
, UITextField
und UIButton
automatisch auf der Grundlage der Größenklasse der aktuellen Gerätekonfiguration direkt im Storyboard festgelegt werden können. Sie können beispielsweise festlegen UILabel
, dass die Schriftgröße 12 für Konfigurationen mit "beliebiger Breite und kompakter Höhe" (z. B. bei iPhones im Querformat) und die Größe 18 für Konfigurationen mit "normaler Breite und normaler Höhe" (z. B. auf iPads ) verwendet wird. Weitere Informationen finden Sie hier:
developer.apple.com/size_class
Dies ist theoretisch eine großartige Funktion, da es möglicherweise unnötig wird, programmgesteuert unterschiedliche Schriftarten für UI-Funktionen basierend auf der Gerätekonfiguration festzulegen. Im Moment habe ich einen bedingten Code, der die Schriftarten basierend auf dem Gerätetyp festlegt, aber das bedeutet natürlich, dass ich die Schriftarten überall in der App programmgesteuert festlegen muss. Ich war anfangs sehr aufgeregt über diese Funktion, aber ich stellte fest, dass es ein ernstes Problem der tatsächlichen Nutzung für mich gibt (möglicherweise ein Fehler). Beachten Sie, dass ich gegen SDK 8 baue und ein Mindestbereitstellungsziel für iOS 8 festlege. Dies hat also nichts mit der Kompatibilität mit alten Versionen von iOS zu tun.
Das Problem ist folgendes: Wenn ich unterschiedliche Schriftgrößen für unterschiedliche Größenklassen einstelle und die von iOS bereitgestellte Schriftart "System" verwende , funktioniert alles wie erwartet, und die Schriftgrößen ändern sich je nach Größenklasse. Wenn ich eine von meiner Anwendung bereitgestellte benutzerdefinierte Schriftart verwende (ja, ich habe sie in meinem Anwendungspaket korrekt eingerichtet, da sie programmgesteuert funktioniert) und die benutzerdefinierte Schriftart auf eine Beschriftung in einem XCode 6-Storyboard setze , funktioniert dies ebenfalls wie erwartet. Wenn ich jedoch versuche, verschiedene Größen der benutzerdefinierten Schriftart für verschiedene Größenklassen im Storyboard zu verwenden, funktioniert dies plötzlich nicht mehr. Der einzige Unterschied in der Konfiguration ist die von mir gewählte Schriftart (eine benutzerdefinierte im Vergleich zur Systemschriftart). Stattdessen werden alle Schriftarten auf dem angezeigtGerät und Simulator als Standardsystemschriftart in der Standardgröße , unabhängig von der Größenklasse (und ich habe über den Debugger überprüft, dass die Systemschriftart die im Storyboard angegebene ersetzt). Grundsätzlich scheint die Größenklassenfunktion für benutzerdefinierte Schriftarten nicht zu funktionieren. Interessanterweise werden die benutzerdefinierten Schriftarten im XCode 6-Bereich "Vorschau" für den Ansichts-Controller tatsächlich angezeigt und passen die Größe richtig an: Sie funktionieren nur dann nicht mehr, wenn sie auf dem tatsächlichen iOS-System ausgeführt werden (was mich glauben lässt, dass ich sie richtig konfiguriere). .
Ich habe mehrere verschiedene benutzerdefinierte Schriftarten ausprobiert und es scheint für keine von ihnen zu funktionieren, aber es funktioniert immer, wenn ich stattdessen "System" verwende.
Wie auch immer, hat jemand anderes dieses Problem in Xcode 6 gesehen ?
Irgendwelche Ideen, ob dies ein Fehler in iOS 8, Xcode oder so ist
Mache ich falsch
Die einzige Problemumgehung, die ich gefunden habe, besteht darin, die Schriftarten weiterhin programmgesteuert festzulegen, wie ich es für etwa drei Versionen von iOS getan habe, da dies funktioniert.
Aber ich würde gerne in der Lage sein, diese Funktion zu verwenden, wenn ich sie mit benutzerdefinierten Schriftarten zum Laufen bringen könnte. Die Verwendung der Systemschriftart ist für unser Design nicht akzeptabel.
ZUSÄTZLICHE INFORMATIONEN: Ab Xcode 8.0 ist der Fehler behoben.