奇怪的 UITableViewCellStyleSubtitle + [cell imageView] 行为

Posted

技术标签:

【中文标题】奇怪的 UITableViewCellStyleSubtitle + [cell imageView] 行为【英文标题】:Strange UITableViewCellStyleSubtitle + [cell imageView] behaviors 【发布时间】:2011-11-06 02:22:47 【问题描述】:

这个问题困扰了我一个月,我一直拒绝发布它,但我不能再坚持了。这是发生了什么:

我有一个带有UITableViewCells 的应用程序,全部初始化为UITableViewCellStyleDefault。对于每一个,我都使用优秀的 SDWebImage 包设置图像视图的图像,它扩展了 UIImageView 以具有 [UIImageView setImageWithURL:(NSURL*)url placeholderImage:(UIImage*)image] 的方法。

问题是图像在 tableView 上显示的比应有的窄,但由于某种原因,选择一行使其大小正确。将行滚动到屏幕外,然后在屏幕上,然后在屏幕外滚动也是如此。

我应该使用什么方法来强制重绘单元格?我发现了一些相互矛盾的想法,但到目前为止都没有奏效。我觉得我错过了对 UITableView 到 UITableViewCell 的简单调用。另外,我在哪里打这个电话?我试过在cellForRowAtIndexPathwillDisplayCell 打电话。

感谢您的帮助!

SDWebImage:https://github.com/rs/SDWebImage

【问题讨论】:

您的UITableView 是否使用了整个屏幕宽度?表格是哪种类型的(普通/分组)?除了在textLabeldetailTextLabel 中设置文本之外,单元格中还有其他内容吗?您是否尝试过在内容加载前后调试图片的大小? 如果你想重绘单元格来修复图片加载问题,你可能应该确保在你的图片加载后立即这样做(我不知道有没有delegateSDWebImage 可以使用吗?)。 我已经尝试过UITableView 既是分组的又是普通的。一些单元格上有一个额外的 imageView - 但问题在我添加这些单元格之前就开始了。图片大小由加载它们的服务器固定为正方形。 我会用什么方法来强制单元格重绘? 您可以使用-tableView:reloadRowsAtIndexPaths: (但这会重新加载整个单元格,这与您滚动进出视口相同)或仅使用单元格上的-setNeedsDisplay:YES contentView 或者 cell.image 【参考方案1】:

我解决了这个问题 - 我必须让我的 SDWebImage 占位符图像与我尝试加载的图像具有相同的纵横比。由于我的服务器强制我的所有图像为 95x95,这是一个相对简单的修复;我只是将我的placeholder.png 更新为 95x95(而不是一些奇怪的尺寸,比如 92x132)

【讨论】:

【参考方案2】:
[[cell imageView] setContentMode:UIViewContentModeScaleAspectFit];

此行使 imageview 以原始分辨率显示图像,但适合图像视图大小。

主要的缺点是如果你有不同尺寸的图片,那么每张图片都会显示不同的尺寸......它看起来应该不太好......

【讨论】:

因为赏金会在 14 分钟内结束,这确实对我有帮助(虽然不是最初的问题),所以你去吧!

以上是关于奇怪的 UITableViewCellStyleSubtitle + [cell imageView] 行为的主要内容,如果未能解决你的问题,请参考以下文章

Linux升级openssl时遇到的奇怪错误

很奇怪,谁知道这是啥编码???

奇怪的443端口?请专家释疑……

比较奇怪的数学问题 (很好理解)

在spark中遇到了奇怪的错误,找到了奇怪的解决方法

Node JS telnet 服务器奇怪的输入和奇怪的输出