2016-02-12 7 views
8

Wie kann ich die dynamic type text style "Title 1" verwenden und die Schriftart für die integrierte Schriftart Chalkboard SE für ein UILabel in einem Storyboard festlegen?Zugreifen auf dynamische Eingabehilfen Größen mit einer benutzerdefinierten Schriftart in einem iOS-Storyboard

Ich muss die Größe des dynamischen Typs in iOS beachten (Apple hat dies seit iOS 7 ermutigt?) Ich muss auch die integrierte Schriftart Chalkboard SE verwenden, die nicht standardmäßig für die "Textstile" verwendet wird Schriftarten. Ich benutze derzeit eine benutzerdefinierte Schriftart wie im Bild gezeigt, aber die Schriftgröße muss in Übereinstimmung mit dem Benutzer Dynamische Typ/Barrierefreiheit Größen Präferenz ändern, so wie alle Schriftarten Fonts tun. Die besten Textarten Option ist Titel 1, aber die Schriftart/Schriftart ist inakzeptabel.

Font menu in Xcode. Custom checked and Title 1 highlighted

+0

Kann nicht über Storyboard allein getan werden. Siehe [Verwenden einer benutzerdefinierten Schriftart mit dynamischen Textgrößen in iOS7] (http://stackoverflow.com/q/20510094/4151918) für programmgesteuerte Antworten. –

+1

Das ist eine wirklich unglaublich große Menge an Code für ein UILabel. Es ist auch in Objective-C, also muss ich es für dieses Projekt übersetzen. Gibt es wirklich keine praktische Möglichkeit, den dynamischen Typ mit einer benutzerdefinierten Schriftart zu verwenden? – timeSmith

Antwort

16

Obwohl Sie nicht beide eine eigene Schriftart und einen bevorzugten Textstil über Storyboard angeben können, ist es nicht schwer zu programmatisch eine dynamische Schriftgröße für die benutzerdefinierte Schriftart angeben:

let pointSize = UIFontDescriptor.preferredFontDescriptorWithTextStyle(UIFont‌​TextStyleTitle1).poi‌​ntSize 
let customFont = UIFont(name: "Chalkboard SE", size: pointSize) 

Wenn Sie erhalten eine UIContentSizeCategoryDidChangeNotification, verwenden Sie den gleichen Code, um die Schriftart Ihres Labels zu aktualisieren.

+1

Irgendeine Möglichkeit, dies für iOS 8 oder 7 zu funktionieren? UIFontTextStyleTitle1 ist nur in iOS 9 verfügbar. – timeSmith

+1

Ich habe Title1 verwendet, weil Sie das in Ihrer Frage angegeben haben. Wenn Sie ein älteres Betriebssystem unterstützen müssen, müssen Sie einen der anderen Textstile ersetzen. –

+0

Ich verstehe, dass Sie deshalb Titel1 verwendet haben. Ich habe getan, genau wie Sie vorschlagen und die Schriftgröße auf die von UIFontTextStyleHeadline * 1.6 für die sonst, wenn # Verfügbarkeit (iOS 9.0, *) – timeSmith

Verwandte Themen