Я испытываю проблемы типа «курица или яйцо» с CoreText.
Мне нужно знать, что CGSize
и NSAttributedString
займут место, когда они обернуты вокруг изображения. У меня есть UITableView, который отображает текст и изображение в правом верхнем углу. В моей модели я храню CTFrameSetterRef
, т.е. я вычисляю это один раз для всех объектов моей модели, когда они загружаются, а затем передаю свою ячейку CTFrameSetterRef
в cellForRowAtIndexPath
.
Я также предварительно вычисляю высоту ячейки с помощью моего frameSetter и CTFramesetterSuggestFrameSizeWithConstraints
. Это прямолинейно, теперь у меня есть массив объектов, у которых есть AttributedString для рендеринга, frameSetter для их рендеринга и высота, поэтому tableView знает это раньше обновление ячейки.
Теперь я хотел бы обернуть текст вокруг изображения в правом верхнем углу. Это создает некоторые проблемы, когда я хочу предварительно вычислить значения.
Насколько я могу понять, мне нужен CTFrameSetter для расчета размера (используя CTFramesetterSuggestFrameSizeWithConstraints). Это дает мне размер только в том случае, если мой фрейм прямоугольный. Если я хочу обернуть текст, мне нужно создать путь и установить его размер, но это до того, как я узнаю размер! Затем мне нужно добавить путь к словарю и создать CTFrameRef со словарем.
Мой вопрос: как мне предварительно рассчитать высоту для моей ячейки, если мой атрибутированный текст обернут вокруг изображения?