У меня есть пользовательский подкласс UILabel
, который создает пользовательский чертеж с использованием CoreText. Я использовал для рисования свои строки, используя UIFont
, который установлен на ярлыке, доступ к ней, используя свойство font. Я также добавляю некоторые черты к шрифту. Вот как это выглядит:Преобразование UIFont в CTFontRef и добавление курсивом на дисплее Retina
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
Ha. Добро пожаловать в основной текст. –
Upvote для бесполезного downvote. –