私はUILabel
のカスタムサブクラスを持っており、CoreTextを使用してカスタム描画を行います。 フォントプロパティを使用してラベルにアクセスするラベルに設定されているUIFont
を使用して文字列を描画しました。私はまた、フォントにいくつかの特性を追加します。これは次のようなものです:UIFontをCTFontRefに変換し、網膜ディスプレイに斜体を追加します。
UIFont* font = [self font];
CTFontRef ref = CTFontCreateWithName((CFStringRef)[font name], [font pointSize], NULL);
CTFontRef italicFont = CTFontCreateCopyWithSymbolicTraits(ref, [font pointSize], NULL, kCTFontItalicTrait, kCTFontItalicTrait);
これは、新しいipadが網膜ディスプレイで現れるまでうまく動作するために使用されました。 CTFontCreateCopyWithSymbolicTraits
呼び出しを実行すると、nilの戻り値が生成されます。私は[font name]
がこれらの新しいデバイスで ".HelveticaNeueUI"を返すことを発見しました。 CTFontCreateWithName
は、このプライベートフォント名で正常に動作するようですが、CTFontCreateCopyWithSymbolicTraits
はありません。しかし、[UIFont italicSystemFontOfSize:[font pointSize]]
を使用して斜体フォントを作成すると、[font name]
がまだ ".HelveticaNeueUI"を返す斜体フォントが作成されます。
UIFont
をCTFontRef
に変換するにはどうすればいいですか?CTFontRef
に網膜と非網膜ディスプレイの新しい特性を適用することはできますか?
そして、あなたの代わりに... – ssteinberg
ハです。コアテキストへようこそ。 –
無駄なdownvoteのUpvote。 –