У меня есть собственный подкласс UILabel
, который делает пользовательское рисование с использованием CoreText.
Раньше я рисовал свои строки, используя UIFont
, установленный на ярлыке, который обращается к нему с помощью свойства font. Я также добавляю некоторые черты к шрифту. Вот как это выглядит:
UIFont* font = [self font];
CTFontRef ref = CTFontCreateWithName((CFStringRef)[font name], [font pointSize], NULL);
CTFontRef italicFont = CTFontCreateCopyWithSymbolicTraits(ref, [font pointSize], NULL, kCTFontItalicTrait, kCTFontItalicTrait);
Раньше все работало нормально, пока не появился новый ipad с дисплеем Retina. Когда я выполняю вызов CTFontCreateCopyWithSymbolicTraits
, он возвращает нулевое возвращаемое значение. Я обнаружил, [font name]
возвращает «.HelveticaNeueUI» на этих новых устройствах. CTFontCreateWithName
, кажется, прекрасно работает с этим частным именем шрифта, но CTFontCreateCopyWithSymbolicTraits
- нет. Тем не менее, если я создаю курсивный шрифт, используя [UIFont italicSystemFontOfSize:[font pointSize]]
, он создает курсивный шрифт, для которого [font name]
по-прежнему возвращает ".HelveticaNeueUI".
Как мне преобразовать мой UIFont
в CTFontRef
, чтобы я мог по-прежнему применять новые черты к своему CTFontRef
на дисплеях сетчатки и без сетчатки?