0

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

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

4

1 回答 1

1

首先,您是否在后台线程上进行任何绘图(UIKit)调用?这是这种绘图损坏的最常见原因。

接下来,你为什么要做一个reloadData后轮换?如果您只是调整大小,那应该没有必要。这些是什么类型的图像?自动调整大小通常会做你想要的,如果没有,你可以重新布局单元格而不重新加载它们。

我强烈怀疑这里的后台操作,但如果不是,那么我会怀疑您cellForIndexPath:在旋转后没有返回有效单元格,这可能是您如何设置 imageView 的问题。

于 2011-06-16T12:26:00.053 回答