Динамическая высота UITableViewCell с отложенной загрузкой изображений в ячейку - PullRequest
3 голосов
/ 28 июня 2011

У меня есть UITableview, который показывает ленту новостей Facebook. В каждой ленте новостей есть несколько изображений разного размера. Поэтому я должен загружать эти изображения лениво и в то же время я должен установить высоту ячейки в соответствии с высотой изображения (которые не загружаются при вызове heightForrowAtIndexPath).

Проблема в том, что у меня нет ширины и высоты изображения, если оно не загружено. Так как установить высоту ячейки в соответствии с изображениями в этой ячейке? Я погуглил много. Ленивые примеры загрузки, показывающие только изображения с фиксированным размером. Пожалуйста, помогите мне .. Спасибо в adavence.

Ответы [ 3 ]

1 голос
/ 28 июня 2011

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

И соответственно отрегулируйте высоту, также вам нужно установить размер imageView, в котором вы собираетесь показывать изображения. Не нужно делать это большим или маленьким. сделать это исправить (предположим, 40 * 40). Тогда вы можете настроить свою клетку.

Для перезагрузки таблицы из фона используйте эту строку кода в вашем фоновом селекторе

[self.yourTableView performSelectorOnMainThread:@selector(reloadData) withObject:nil waitUntilDone:NO];
1 голос
/ 28 июня 2011

Ну, вы не можете знать размер изображения, прежде чем загрузить его.Вы можете проверить в heightForCellAtIndexPath, загружено ли изображение.Затем установите правильную высоту, просто позвоните beginUpdate и endUpdate в представлении таблицы после загрузки изображения.

0 голосов
/ 28 июня 2011

Ниже приведен очень хороший пример официального яблока.

LazyTableImages

Из документа Apple.

Этот пример демонстрирует многоступенчатыйподход к загрузке и отображению UITableView.Он начинается с загрузки соответствующего текста из RSS-канала, чтобы таблица могла загружаться как можно быстрее, а затем загружает изображения для каждой строки асинхронно, чтобы пользовательский интерфейс был более отзывчивым.

...