我有一个UIYableView,我将图像保存在该tableview中,每次旋转手机时都会更改UIImageView的大小。我检查了tableView:cell:forIndexpath中的self.interfaceOrientation,并确定了为imageview提供的大小。每次旋转发生时,我都会重新加载tableview。但旋转后,图像似乎变得混杂。我的意思是我在另一个图像上获得图像的一部分。解决这个问题的最佳方法是什么?
编辑:添加了一些代码
在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];
tableview中的:height:forIndexPath方法:
double height;
if(self.interfaceOrientation==UIInterfaceOrientationPortrait)
height=460;
else
height=300;
return height;
我以同样的方式返回行的宽度。
答案 0 :(得分:1)
首先,你在后台线程上进行任何绘图(UIKit)调用吗?这是造成这种绘画腐败的最常见原因。
接下来,你为什么要在轮换后进行reloadData
?如果你只是调整大小,那就没有必要了。这些图像是什么类型的?自动调整通常会执行您想要的操作,如果没有,您可以重新布局单元格而无需重新加载它们。
我强烈怀疑这里的后台操作,但如果没有,那么我会怀疑你的cellForIndexPath:
在轮换后没有返回有效的单元格,这可能与你设置imageView的方式有关。