Ich versuche, Code nach Swift zu portieren, der UIFont
und CTFont
verwendet, und das (in Objective-C erfolgreich) verwendet einfache überbrückte Casts, um von einem zum anderen zu gelangen und umgekehrt.
Betrachten Sie zum Beispiel diesen Code (in einer UIFontDescriptor-Kategorie):
%Vor%Ich bin noch nicht in der Lage, herauszufinden, wie ich das in Swift so ausdrücken soll, dass es tatsächlich kompiliert wird. Das Folgende zumindest nicht:
%Vor%Fehler: 'UIFont' kann nicht in 'CTFont' konvertiert werden
Dies wurde anscheinend in einer späteren Version von Swift und / oder CoreText
behoben. Zumindest funktioniert es jetzt in meinem Test mit Xcode 7.0.1.
Versuchen Sie es. Sie können die Werte nicht einfach von einem Typ zum anderen zwingen. Wenn Sie jedoch einen CTFont aus dem Deskriptor und der Größe erstellen, scheint es Ihnen ein gültiges Array zu geben, selbst wenn Sie keine Matrix für Transformationen (den Parameter nil) enthalten
%Vor% Wie beim Erstellen des CTFontDescriptor würde ich CTFontDescriptorCreateWithNameAndSize
oder CTFontDescriptorCreateWithAttributes
verwenden, je nachdem, was Sie ursprünglich angegeben haben. Letzteres verwendet ein einfaches NSDictionary, und das erstere verwendet nur den Namen und die Größe einer Schriftart.
Um von einer vorhandenen Schriftart (nennen wir sie originalFont
) zu gehen, gehen Sie einfach so vor, um einen Deskriptor zu erhalten: