2009-05-23 3 views
23

На iPhone, как вы определяете ширину представления содержимого ячейки таблицы, когда она показывает определенный вид аксессуаров (индикатор раскрытия информации и т. Д.)?Ширина содержимого контента UITableViewCell с данным аксессуаром

Мне нужно это, чтобы вычислить правильную высоту ячейки для ячеек, которые содержат обертку, текст переменной длины. Но когда делегат представления таблицы запрашивает высоту ячейки, на самом деле он не имеет фактического экземпляра ячейки, поэтому он не может просто запрашивать границы представления содержимого напрямую.

Я могу с легкостью скорректировать 20-пиксельное поле справа, которое кажется точным для табличного представления в обычном стиле в портретной ориентации с индикатором раскрытия, но предпочтет сделать это правильно, чтобы он сохранял если Apple решит изменить маржу.

(Это связано с this question.)

ответ

2

Лично я бы просто запрограммировал значения - проще, и все будет ломаться предсказуемым образом.

Но если бы я сделал это программно, я бы создал UITableViewCell, настроил свойства редактирования/аксессуары, которые нужно измерить, а затем спросите, насколько велик его контент-просмотр.

Конечно, я бы, вероятно, сильно зациклился на этом - делая выделение при запросе UITableView, спрашивает, как звучит информация о высоте, как будто это было бы медленно (сначала попробуйте профайлер, хотя, как всегда).

+0

Да, я закончил hardcoding (это 20 пикселей). Я думаю, что я попытался создать фиктивную ячейку, как вы описали, когда я впервые пытался это сделать, и, если я правильно помню, это не сработало. Я думаю, что макет только устанавливается, когда ячейка фактически отображается в виде таблицы. –

+0

О, хорошо! Рад слышать, что вы нашли решение. –

0

Я бы подкласс UITableViewCell, который содержит все его дочерние элементы. Вы можете связать кадр с определенными элементами, когда ячейка входит и существует режим редактирования. Это хороший пример этого в руководстве по программированию таблиц Apple в разделе по созданию пользовательской ячейки таблицы.

0

Я считаю, что свойство contentView UITableViewCell - это представление, которое содержит ваши метки и т. Д., Поэтому ширина этого размера должна быть доступной для использования.

+0

Проблема заключается в том, что делегат представления таблиц должен знать высоты ячеек, которые не видны, и, следовательно, не имеют фактического экземпляра ячейки, из которого можно получить контент. Полагаю, я могу просто получить _a_ видимую ячейку contentView и предположить, что все остальные ячейки будут иметь ту же ширину contentView. –

+0

Вы можете попробовать просто удалить метод высоты из делегата, а затем установить высоту при настройке ячейки, используя метод в UITableView –

+0

@Ed - это не сработает, потому что делегат представления таблиц должен сообщить в таблицу, что высота всех ячеек еще до их настройки, так что вид прокрутки получает правильные размеры. –

Смежные вопросы