2013-06-19 1 views
1

Я работаю над приложением, которое использует tableviews, который отображает контент, полученный из веб-службы. В некоторых ячейках мне может потребоваться отобразить изображение с неизвестными размерами. Для этого у меня есть UIImageView внутри ячейки фиксированной ширины (292pts). Затем я корректирую высоту изображения так, как это.Изменение UITableViewCell Высота после создания

imageviewheight = 292/ImageWidth * ImageHeight

Например, если у меня есть изображение, которое 730 * 1250 я установить высоту до 500, чтобы сохранить пропорции и показать полное изображение.

Однако это может быть проблемой, когда мне нужно установить высоту ячейки. Поскольку изображения загружаются из Интернета, изображение, возможно, не закончило загрузку, когда мне нужно создать ячейку. Таким образом, я не могу определить высоту ячейки до тех пор, пока изображения не будут загружены, и я не смогу, чтобы мой пользовательский интерфейс подождал этого, поэтому вместо этого я показываю изображение с заполнителем, а высота ячейки основана на высоте этого.

Как только мое изображение загрузилось, мне нужно его отобразить на изображении. Это было бы хорошо, если бы высота соответствовала высоте изображения-заполнителя. В противном случае мне нужно настроить высоту изображения для компенсации, а также изменить высоту ячейки. Но проблема в том, что я не могу изменить высоту после создания ячейки.

Единственное решение, о котором я могу думать, это сохранение UIImage и перезагрузка ячейки. Затем, поскольку у меня уже есть изображение, я могу настроить высоту ячейки соответственно на основе изображения. Однако это кажется очень неэффективным решением. Есть ли способ отрегулировать высоту ячейки после ее создания? Я попытался изменить фрейм ячейки, но ничего не сделал. Есть ли способ изменить высоту ячейки после создания или перезагрузить единственный способ?

+1

Я думаю, что это поможет вам [нажмите здесь] (http://stackoverflow.com/questions/7194136/how-do-i-change-the-height-of-a-uitableview-to-fit-its- динамический контент). Надеюсь, что это поможет. – keen

+0

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

+0

почему вы не задали высоту и ширину изображения? –

ответ

1

После загрузки изображения убедитесь, что вы возвращаете правильную новую высоту для строки из UITableViewDelegate по методу - (CGFloat)tableView:(UITableView *)tableView heightForRowAtIndexPath:(NSIndexPath *)indexPath. Возможно, вам потребуется позвонить - (void)reloadRowsAtIndexPaths:(NSArray *)indexPaths withRowAnimation:(UITableViewRowAnimation)animation, чтобы заставить его повторно проверить значение для высоты этой строки.