CTFrameGetPath
возвращает путь, описанный CTFrame
, а не путь, созданный при рисовании рамки. Я предполагаю, что вы делаете выше, потому что вы кэшируете пути, чтобы улучшить производительность рисования позже? (Поскольку CTFrame
может легко нарисовать себя в пользовательском представлении).
Если вы действительно хотите получить CGPath
, вам нужно детализировать до CGGlyph
, а затем использовать CTFontCreatePathForGlyph
. Если вы просто хотите быстро перерисовать текст, я бы, вероятно, нарисовал его в CGLayer
(не CALayer
) с CTFrameDraw
для последующего повторного использования.
Если вы по-прежнему действительно хотите CGPath
для глифов, взгляните на Низкоуровневое отображение текста . Код, который вам нужен, там.