My UITableView
необходимо отобразить некоторые изображения с сервера. UITableViewCell
состоит из одинарных UIImageView
и NSLayoutConstraint
для высоты UIImageView
.
В cellForRowAtIndexPath
в контроллере представления он выбирает изображение с сервера и изменяет размер изображения до ширины экрана. Одна важная вещь состоит в том, что изображение должно сохранять аспект, поэтому я сделал код, чтобы получить высоту изображения, сохраняющего аспект. Высота применяется к ограничению макета, которое относится к высоте представления изображения.
Если я не вызываю [tableView beginUpdates]
и [tableView endUpdates]
метод, ячейка не изменяет размеры, поэтому я вызываю эти методы после загрузки каждого изображения для ячейки. Проблема заключается в том, что при прокрутке изображения пользователем при просмотре изображения и при вызове методов beginUpdates
и endUpdates
прокрутка переходит к некоторой точке. (Я не уверен, куда переходит табличное представление)
Вот что я пытался предотвратить, прыгая:
- (void)resizeCellHeight {
[UIView performWithoutAnimation:^{
self->currentScrollY = self.tableView.contentOffset.y;
[self.tableView beginUpdates];
[self.tableView endUpdates];
self->currentScrollY = -1;
}];
}
- (void)scrollViewDidScroll:(UIScrollView *)scrollView {
if(currentScrollY != -1) {
[scrollView setContentOffset:CGPointMake(scrollView.contentOffset.x, currentScrollY) animated:NO];
}
}
Иногда это работало, но не на 100%. Этот код иногда даже препятствовал замедлению и продолжал прыгать.
Есть ли что-нибудь, чтобы предотвратить прокручивание вида прокрутки? или лучший способ вычислить ячейку?