i ein UIFont als Delegierter erklärt haben ... und in einer anderen Datei vonWie kann ich UIFont zu CGFontRef konvertieren? Verursacht ich Warnung und nicht funktioniert
CGColorRef *color = appdel.color.CGColor;
i ein UIFont als Delegierter erklärt haben ... und in einer anderen Datei vonWie kann ich UIFont zu CGFontRef konvertieren? Verursacht ich Warnung und nicht funktioniert
CGColorRef *color = appdel.color.CGColor;
CGFontRef cgFont = CGFontCreateWithFontName((CFStringRef)uiFont.fontName);
Sie stellen eine Frage in das Thema und es scheint eine andere im Körper. Ich werde auf den Betreff antworten.
Sie können einfach nur werfen einen UIFont * zu einem CGFontRef wie folgt aus:
UIFont *font = [UIFont fontWithName:@"Helvetica" size:10.0];
CGFontRef cgFont = (CGFontRef) font;
Ich habe nicht bestätigt, ob dies der offizielle Weg, es zu tun ist, aber es funktioniert für mich.
Update:
Es ist ein wenig seltsam, weil es manchmal funktioniert, aber manchmal ist es nicht. Zum Beispiel, das funktioniert:
CGContextSetFont(context, (CGFontRef) font);
Aber dies nicht:
CTFontCreateWithGraphicsFont((CGFontRef) font, 10.0, nil, nil);
Apples Dokumentation für CATextLayer besagt ausdrücklich, dass Sie keine UIFont-Instanz verwenden können, für die ein CGFontRef angefordert wurde. Dies wirft die Frage auf, ob CGFontRef/UIFont tatsächlich gebührenfrei überbrückt werden (ich denke nicht?) – Adam
'CGContextSetFont (Kontext, (CGFontRef) font)' funktioniert auch nicht für mich - es scheitert still, auch wenn ich 'addiere __bridge', um es zu einem "überbrückten Cast" zu machen – AlexChaffee
In Swift 4 CGFontRef
zu CGFont
umbenannt wurde. Umwandlung ist ziemlich einfach
let font: CGFont? = CGFont(uiFont.fontName as CFString)
nicht berücksichtigt Größe der Schriftart nimmt. Sie müssen das manuell tun. –
Dies erfordert auch eine Brücke, wenn Sie ARC verwenden. Für mich funktionierte etwa Folgendes: 'CGFontRef cgFont = CGFontCreateWithFontName ((__ bridge CFStringRef) uiFont.fontName);' – sammarks