Benutzerdefinierte Größe der Schriftart in Xcode 6 Größenklassen nicht ordnungsgemäß mit Benutzerdefinierten Schriftarten

Xcode 6 hat eine neue Funktion, wo Schriftarten und-Größen in UILabel, UITextField und UIButton kann automatisch eingestellt werden, basierend auf der Größe der Klasse der aktuellen Geräte-Konfiguration mit der rechten in das storyboard. Zum Beispiel können Sie ein UILabel zu verwenden, Schriftgröße 12 auf "Breite, kompakte Höhe" (wie beim iPhone im Querformat) - Konfigurationen und-Größe 18 auf "normale Breite, regelmäßige Höhe" Konfigurationen (wie z.B. iPads). Weitere Informationen finden Sie hier:

https://developer.apple.com/library/content/documentation/UserExperience/Conceptual/AutolayoutPG/Size-ClassSpecificLayout.html

Dies ist ein wirklich tolles feature-in der Theorie, da könnte es unnötig werden, um programmgesteuert verschiedene Schriftarten auf UI-Funktionen auf Basis der Geräte-Konfiguration. Jetzt habe ich einige bedingte code, legt die Schriftarten auf der Grundlage der Geräte-Typ, aber das bedeutet natürlich, habe ich die Schriften programmatisch überall in der app. Also ich war anfangs echt begeistert von diesem feature, aber ich fand, dass es ein ernstes problem in der tatsächlichen Nutzung für mich (vielleicht ein Fehler). Beachten Sie, dass ich bin Gebäude gegen SDK 8 und die Festlegung eines Mindest-Ziel der Bereitstellung von iOS 8, so hat dies nichts zu tun mit der Kompatibilität mit älteren Versionen von iOS.

Das problem ist dieses:
Wenn ich unterschiedliche Schriftgrößen für unterschiedliche Größenklassen, und verwenden Sie die "System" - Schrift zur Verfügung gestellt von iOS, funktioniert alles wie erwartet und die Größe der schriftart ändern, basierend auf der Größe der Klasse. Wenn ich eine benutzerdefinierte schriftart bereitgestellt durch meine Bewerbung (ja, ich habe es richtig in mein Programm-bundle, wie es funktioniert programmgesteuert) und legen Sie die benutzerdefinierte schriftart für eine Beschriftung in einem XCode 6 storyboard, das funktioniert auch wie erwartet. Aber wenn ich versuche, mit unterschiedlichen Größen von die benutzerdefinierte schriftart für verschiedene Größenklassen, in dem storyboard, es funktioniert plötzlich nicht. Der einzige Unterschied in der Konfiguration ist die schriftart die ich gewählt habe (eine benutzerdefinierte vs. die System-Schrift). Stattdessen werden alle Schriftarten auf dem Gerät und den simulator als Standard-system-schriftart auf die Standard-Größe, unabhängig von der Größe, Klasse (und ich überprüft über den debugger, die es ersetzen die system-schriftart für die tatsächliche angegeben in der storyboard). Im Grunde ist die Größe Klasse feature gebrochen erscheint für benutzerdefinierte Schriftarten. Auch interessant ist, die kundenspezifische Schriftarten eigentlich die Anzeige und passen Sie die Größe richtig in der XCode 6 in der "Vorschau" Bereich für die view-controller: es ist nur bei der Ausführung auf die aktuelle iOS-system, dass es nicht mehr funktioniert (das macht mich denken, dass ich bin, ist die Konfiguration korrekt).

Ich habe versucht, mehrere verschiedene benutzerdefinierte Schriftarten und es scheint nicht zu funktionieren für jeden von Ihnen, aber es funktioniert immer wenn ich "System" statt.

Trotzdem, hat jemand anderes dieses problem gesehen in Xcode 6? Irgendwelche Ideen auf, ob das ein bug in iOS 8, Xcode, oder etwas, was ich falsch mache? Die einzige Lösung die ich gefunden habe, wie ich schon sagte, ist weiterhin das programmgesteuerte festlegen der Schriftarten, die wie ich schon seit über 3 iOS-Versionen, denn das funktioniert nicht. Aber ich würde gerne in der Lage sein, um diese Funktion zu nutzen, wenn ich es für die Arbeit mit benutzerdefinierten Schriftarten. Mit der System-schriftart ist nicht akzeptabel für unser design.


ZUSÄTZLICHE INFO:
Als Xcode-8.0, Fehler ist behoben.

  • Ich habe das gleiche problem. Einstellung eine benutzerdefinierte schriftart basierend auf der Größe der Klasse scheint nicht zu funktionieren. Seltsam, der gleiche code sowohl Vorschau korrekt in Xcode und läuft einwandfrei unter iOS 7.
  • Ich hatte nicht versucht es auf iOS 7, da die neue version von meiner app fällt die Unterstützung für iOS 7, aber diese information macht mich zuversichtlich, dass es nur ein bug in iOS 8. Denn jetzt bin ich nur die Einstellung alle benutzerdefinierten Schriftarten programmgesteuert, aber ich werde betrachten die Einreichung ist ein Fehler mit Apple.
  • Kann ich bestätigen, ist dies immer noch der Fall in xCode 6.1 (6A1052d) app-store-release.
  • Der bug-report, die mine wurde als Duplikat gekennzeichnet ist immer noch "offen" mit Apple nach Ihrem system.
  • Keine Lösung, aber ich habe es geschafft zu bekommen, um das problem mit einer Kategorie. Meine Kategorie UILabel+Schrift.h (ich habe eine für Schaltflächen) enthält den folgenden code. -(void)awakeFromNib { float size = [self.schriftart-pointSize]; self.font = [UIFont fontWithName:@"YourCustomFont" - Größe:Größe]; } So, dies erlaubt uns, die Größe der Klassen mit der System-schriftart zu setzen, die Punkt-Werte in verschiedenen Größenklassen, und die Kategorie wird sichergestellt, dass der korrekte font gesetzt ist. Vielleicht könntest du probieren, bis Apple ein update veröffentlicht?
  • Ja, das ist ein annehmbarer workaround für das problem, zumindest so dass Sie nicht haben, um es überall. Ich mag es. Leider, es wird immer komplizierter, wenn Sie benötigen, um mehrere verschiedene Schriftarten in verschiedenen Orten. Ich will immer noch die Flexibilität des in der Lage seins, um die Konfiguration in das storyboard, also werde ich wahrscheinlich lassen Sie es wie es ist, bis Sie kommen mit einem fix für diesen Fehler.
  • sollten Sie nicht außer Kraft system-Methode awakeFromNib in Ihrer Kategorie. Stattdessen erstellen Sie eine Methode in Ihrer Kategorie und rufen Sie für welches label Sie möchten gesetzt ist, oder, Unterklasse Ihrem label.
  • Noch nicht gelöst in Xcode 6.3.1. Ich bin wütend auf diese.
  • Wie @Harry gesagt funktioniert es immer noch nicht auf v6.3.1. Sie verbringen viel Zeit damit, alles programmgesteuert. 7 Monate und immer noch nicht gepatcht ... Anstatt nur darüber nachzudenken, dass mehr Geld (Preise gehen bis auf all Ihren Produkten), sollten Sie sich Gedanken über die Menschen, Dank denen Sie in der Lage sind das Geld verdienen...
  • Noch nichts 6.3.2. Ich musste gehen durch eine Recht große storyboard-Datei hacking Dinge Weg. Von jetzt denke ich, wir können nur hoffen, dass für iOS 9 🙂
  • Hier gilt das gleiche mit Xcode 6.3.2.
  • Funktioniert immer noch nicht mit Xcode 7 beta 5
  • Funktioniert immer noch nicht mit Xcode 7 final. Verstehe nicht, warum Apple nicht zu beheben.
  • Sah einfach auf den bug-report, den ich bald nach der Veröffentlichung von iOS 8, und der bug, dass die mine geschlossen wurde, die ein Duplikat ist noch offen. Ich würde andere ermutigen, zu berichten, um zu versuchen, einige der Druck auf Sie, um es zu beheben. Wahrscheinlich ist es nicht Priorität für ein Update, nur weil es ein "workaround" (dh, verschiedene Möglichkeiten, das gleiche zu tun, programmgesteuert), aber ich bin überrascht, es ist nicht behoben, iOS 9, da Es eine Ihrer wichtigsten neuen Entwickler-freundliche features in iOS 8 sehr viel weniger nützlich.
  • Ich habe auch dieses problem mit UIButtons, die kann man nicht überschreiben, setFont, wie es ist eine Methode, die auf die Beschriftung der Taste, nicht die Taste selbst. Irgendwelche Ideen?
  • Noch ein bug in iOS 9 Xcode 7 (nicht sicher, die genaue version, nicht an meiner OS X-Maschine atm)
  • funktioniert es immer noch nicht auf Xcode iOS 7.2 9.2
  • funktioniert es immer noch nicht auf Xcode iOS 7.2.1 9.2
  • funktioniert immer noch nicht.... was für ein merkwürdigen Fehler.... apple beheben sollte so bald wie möglich
  • Funktioniert immer noch nicht
  • Jeder Datei ein radar über diesen Fehler?
  • Eingereicht ein radar, immer noch nicht funktioniert 7.3.1 iOS 9.3.
  • Apple aktualisiert mein bug-report: die ursprünglichen bug-report wurde geschlossen. Ich werde versuchen, mit der letzten Xcode build, wenn ich kann.
  • Als Xcode-8.0 (8A218a) kann ich sagen, dass der Fehler Weg ist 🙂
  • Jetzt klappt es ziemlich gut mit Xcode 8:) tolle Arbeit Apple...
  • Irgendwie hat dieser Fehler Auswirkungen sind noch heute in Xcode 10. Ich system-schriftart in der Spitze mit mehreren Größenklassen Schriften für ein label, und überschreiben Sie programmgesteuert, um sicherzustellen, dass die richtige schriftart angezeigt, die zur Laufzeit mit awakeWithNib, es zeigt system-schriftart statt.

InformationsquelleAutor mnemia | 2014-10-02
Schreibe einen Kommentar