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