旋转后图像会被破坏

时间:2011-06-16 11:57:41

标签: iphone uitableview uiimageview auto-rotation

我有一个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;

我以同样的方式返回行的宽度。

1 个答案:

答案 0 :(得分:1)

首先,你在后台线程上进行任何绘图(UIKit)调用吗?这是造成这种绘画腐败的最常见原因。

接下来,你为什么要在轮换后进行reloadData?如果你只是调整大小,那就没有必要了。这些图像是什么类型的?自动调整通常会执行您想要的操作,如果没有,您可以重新布局单元格而无需重新加载它们。

我强烈怀疑这里的后台操作,但如果没有,那么我会怀疑你的cellForIndexPath:在轮换后没有返回有效的单元格,这可能与你设置imageView的方式有关。