我正在使用webcache加载一个facebook用户列表,它的工作非常棒。在您选择其中一个单元格之前,它似乎要么更改内容模式,要么更可能更改uiimageview框架的大小,而是根据图片的实际大小。为清楚起见,这里有一些屏幕
这里加载了 http://img.photobucket.com/albums/v246/homojedi/Screenshot20120727114807.png
并且在选择一些图像时,您可以看到它们似乎跳到了原始的方面。 http://img.photobucket.com/albums/v246/homojedi/Screenshot20120727114827.png
如预期的那样,如果我将它们从屏幕上滚动并返回到它们,它们将恢复到开始时的状态。
令人费解。我唯一没有尝试的是子类化uitableView并在那里设置其布局子视图。除此之外还有什么我可以做的吗?
编辑:请求的代码
- (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];
}
答案 0 :(得分:57)
我遇到与你完全相同的问题,我修复了
问题是因为您将imageView命名为“imageView”
我不知道为什么
如果您将imageView名称更改为“m_imageView”
问题已修复
这就是命名!
答案 1 :(得分:17)
我遇到过这个问题,但我的自定义UITableViewCell中没有imageView
属性。
事实上,我确实通过将我的imageView对象中的额外IBOutlet 连接到UITableViewCell的默认imageView
属性而犯了一个愚蠢的错误。这是因为我最初将我的图像视图imageView
命名为,但后来我改变它并忘记了插座。
取下插座后,一切正常。
答案 2 :(得分:7)
以防其他人,像我一样,遇到这个问题,而上述情况并非如此。
我也将UIImageView
命名为imageView
。 但是,出于某种原因,即使重命名后,问题仍然存在。
我尝试了一切我能想到的,重置模拟器,清洁项目,添加删除约束....
事实证明,只需从故事板中删除 UIImageView
,然后拖动新的即可修复它。
因为我清理了项目,所以不能成为预编译的问题。去图。
答案 3 :(得分:2)
我遇到了这个问题,我解决了它!
检查以确保在自定义TableViewCell中合成了imageView属性。
我忘了合成一个属性(导致IBOutlet没有getter / setter)。
这个话题很老但希望能帮到别人!
答案 4 :(得分:2)
// here is the _clientSocket that I accepted
_clientSocket = _serverSocket.Accept();
int received = _clientSocket.Receive(_buffer, 0, _buffer.Length,
SocketFlags.None);
// here is the message I got from the client
string receivedMsg = Encoding.ASCII.GetString(_buffer);
if (receivedMsg == "1")
//TO DO: send back to client "This is a test message from server".
答案 5 :(得分:1)
我相信你的问题是由于UIImageView。你应该设置一次图像 - cell.imageView.image = myImage。不要设置highlightImage。设置contentMode以保持图像的宽高比:cell.imageView.contentMode = UIViewContentModeScaleAspectFit;,并验证contentStretch rect是0,0,1,1(默认值)。
当tableView被选中时,它可能会改变UIImageView或其框架的contentMode(因为谁知道原因)。我会将NSLogs添加到willSelectRowAtIndexPath和didSelectRowAtIndexPath,显示相同的信息:imageView框架,contentMode值(作为整数)等。不知何故,这些值中的一个或多个在选择时发生变化。
答案 6 :(得分:1)
添加有关命名问题的答案:
如前所述,即使重命名后,图像视图的问题仍然存在。但是不需要从xib或故事板中删除UIImageView
。您只需按住Ctrl键单击图像视图,即可删除仍然存在的属性imageView
的连接。
imageView
的链接仍然存在的原因似乎是imageView
属性在您的代码中删除后仍然可用。它仍然存在,因为它继承自UITableViewCell
。
最后一个提示听起来很愚蠢,但花了我几分钟才意识到:显然所有使用属性名称imageView
的代码仍然有效,但会导致奇怪的行为!因此请仔细检查是否没有使用旧属性名称的代码。
答案 7 :(得分:1)
我遇到了同样的问题,即使在尝试了之前的所有答案之后,他们都没有成功。后来我发现UITableViewController有多个未使用的Outlet,所以删除未使用的Outlets解决了这个问题。
答案 8 :(得分:0)
根据sebastian-Luczak的要求,我确实找到了调整大小的解决方案,但是现在出现了图像质量不一致的问题,只有当你触摸它时才能获得更高的分辨率,奇怪但不是那么糟糕或者说不明显,无论如何这里是代码
N.B我正在使用SDWebImage异步加载图片
[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)
{
}];
答案 9 :(得分:0)
//如果你是UITableViewCell的子类,你可以摆脱这个问题
- (void)layoutSubviews {
[super layoutSubviews];
self.imageView.bounds = CGRectMake(10,5,65,65);
self.imageView.frame = CGRectMake(10,5,65,65);
self.imageView.contentMode = UIViewContentModeScaleAspectFit;
}