Ширина содержимого UITableViewCell с заданным типом аксессуара
На iPhone, как вы определяете ширину представления содержимого ячейки таблицы, когда она показывает определенный вид аксессуаров (индикатор раскрытия и т.д.)?
Мне нужно это, чтобы вычислить правильную высоту ячейки для ячеек, которые содержат обертку, текст переменной длины. Но когда делегат представления таблицы запрашивает высоту ячейки, у нее фактически нет фактического экземпляра ячейки, поэтому он не может просто запросить границы представления содержимого напрямую.
Я могу с легкостью скорректировать 20-пиксельный запас справа, который, по-видимому, является точным для простого представления таблицы таблиц в портретной ориентации с индикатором раскрытия, но предпочел бы сделать это правильно, чтобы он продолжал работать если Apple решит изменить маржу.
(Это связано с этим вопросом.)
Ответы
Ответ 1
Лично я просто хотел бы скомпоновать значения - проще, и все будет прервано предсказуемым способом.
Но если бы я сделал это программно, я бы создал UITableViewCell, настроил свойства редактирования/аксессуары, которые нужно измерить, а затем спросите, насколько велик его контент-просмотр.
Конечно, я бы, вероятно, сильно кешировал это - делая выделение при запросе UITableView, спрашивает у вас звуки информации о высоте, как будто это было бы медленно (сначала проверьте с помощью профайлера, хотя, как всегда).
Ответ 2
У меня был бы подкласс UITableViewCell, который содержит все его подэлементы. Вы можете связать кадр с определенными элементами, когда ячейка входит и существует режим редактирования. Это хороший пример этого в руководстве по программированию таблиц Apple Table в разделе о создании пользовательской ячейки представления таблицы.
Ответ 3
Я считаю, что свойство contentView UITableViewCell
- это представление, которое содержит ваши метки и т.д., поэтому ширина этого должна быть вашим доступным размером для использования.