2013-10-13 4 views
5

В прошивке 7, некоторые из функций рисования текста CGContext были устаревшими в пользу основного текста:CoreText альтернативы устаревших текстовых функции CGContext

Deprecated CGContext Functions

Иногда компания Apple предлагает конкретные альтернативы устаревших функций (например, «использование x вместо "), но в этом случае« x »- это просто« Core Text », что не совсем точно.

Итак, если я всего лишь в -drawRect:, и у меня есть CGContextRef, и я готов позвонить CGContextShowGlyphsAtPoint(), что мне делать вместо этого? Какова наилучшая практика, и какова самая простая замена Core Text, которая не требует рефакторинга любого кода чертежа, выходящего за этот вызов (если такая вещь существует)?

Бонусные баллы за ответ, который кратко отвечает на это за каждую из устаревших текстовых функций на этой странице - меня больше всего интересует CGContextShowGlyphsAtPoint(), но это может послужить хорошей ссылкой для других, ищущих альтернативы любой из этих функций.

+0

Вы можете попробовать 'CTFontDrawGlyphs'. Вероятно, вам придется делать некоторые вычисления, но это кажется лучшим методом, который я видел. –

ответ

0

Я считаю, что цель состоит в том, чтобы CGContextShowGlyphsAtPoint был заменен на CGContextShowGlyphsAtPositions. Вы можете получить позиции глифов с CTRunGetPositionsPtr или (если это возвращает NULL), CTRunGetPositions.

AFAICT, CGContextShowGlyphsAtPositions также заменяет несколько других бывших функций CoreText, такие как CGContextShowGlyphs, CGContextShowText и CGContextShowTextAtPoint. Другие прежние функции CoreText, такие как CGContextSelectFont, заменяются несколькими новыми функциями (в этом случае CGContextSetFont и CGContextSetFontSize). Я считаю, что это довольно понятно, читая the API.

Могут быть другие устаревшие функции, о которых я конкретно не упоминал, но я считаю, что вы поняли.

Смежные вопросы