Изображения портятся после поворота - PullRequest
0 голосов
/ 16 июня 2011

У меня есть UIYableView, и я сохраняю изображения в этом виде таблицы, я меняю размер UIImageView каждый раз, когда поворачиваю телефон. Я проверяю self.interfaceOrientation в tableView: cell: forIndexpath и решаю, какие размеры присваивать изображению. И я, конечно же, перезагружаю таблицу при каждом повороте. Но после поворота изображения кажутся смешанными. Я имею в виду, что я получаю часть изображения на другом изображении. Как лучше всего это исправить?

Редактировать: добавлен код

В методе tableview: cell: forIndexPath я делаю следующее:

...............
NSUIinteger row=indexPath.row;
UIImageView *imageView=[[UIIMage alloc]initWithImage:[images ojectAtIndex:row]];
if(self.interfaceOrientation==UIInterfaceOrientationPortrait)
 imageView.Frame.Size=CGSizeMake(320.0,460.0);    
else
 imageView.Frame.Size=CGSizeMake(480.0,300.0);
imageView.contentMode=UIContentModeAspectFit;
[cell.contentView addSubView:imageView];

в табличном представлении: высота: метод forIndexPath:

double height;
if(self.interfaceOrientation==UIInterfaceOrientationPortrait)
 height=460;    
else
 height=300;  
return height;

Я возвращаю ширину строки таким же образом.

1 Ответ

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

Во-первых, вы делаете какие-либо вызовы рисования (UIKit) в фоновых потоках? Это самая распространенная причина такого рода коррупции.

Далее, почему вы делаете reloadData после вращения? В этом не должно быть необходимости, если вы просто меняете размеры. Что это за изображения? Автоматическое изменение размера, как правило, делает то, что вы хотите, а если нет, вы можете изменить расположение ячеек, не перезагружая их.

Я сильно подозреваю, что здесь выполняются фоновые операции, но если нет, то я подозреваю, что ваш cellForIndexPath: не возвращает действительные ячейки после поворота, вероятно, проблема с тем, как вы устанавливаете imageView.

...