Для размещения длинной строки на страницах я могу использовать CTFramesetterCreateFrame
для создания CTFrameRef
, а затем перемещать начальный индекс в строке для создания следующего CTFrameRef
. Это легко, поскольку начальный индекс продвигается вперед, а API-интерфейсы основного текста изначально поддерживают такой макет.
Теперь я застрял в ситуации, когда хочу вернуться на предыдущую страницу.
Например, длина длинной строки равна 1000, теперь начальный индекс текущей страницы (или CTFrameRef
) равен 500, и я хочу перейти на предыдущую страницу, как мне узнать, с какого индекса начинать? Я не могу кэшировать все индексы для каждой страницы или вычислять с начала строки, потому что строка может быть очень длинной и не помещаться в памяти (мне нужно будет читать строку из файла поблочно) . Я просмотрел CT*
API, нет такого API, который поддерживает размещение текста в обратном порядке.
Любые идеи по этому поводу?