【发布时间】:2012-04-04 04:34:58
【问题描述】:
我有一个 UILabel 的自定义子类,它使用 CoreText 进行自定义绘图。
我曾经使用在标签上设置的UIFont 绘制字符串,使用字体属性访问它。我还为字体添加了一些特征。这是它的样子:
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?
【问题讨论】:
标签: ios core-text retina-display