奇怪的 UITableViewCellStyleSubtitle + [cell imageView] 行为
Posted
技术标签:
【中文标题】奇怪的 UITableViewCellStyleSubtitle + [cell imageView] 行为【英文标题】:Strange UITableViewCellStyleSubtitle + [cell imageView] behaviors 【发布时间】:2011-11-06 02:22:47 【问题描述】:这个问题困扰了我一个月,我一直拒绝发布它,但我不能再坚持了。这是发生了什么:
我有一个带有UITableViewCell
s 的应用程序,全部初始化为UITableViewCellStyleDefault
。对于每一个,我都使用优秀的 SDWebImage 包设置图像视图的图像,它扩展了 UIImageView 以具有 [UIImageView setImageWithURL:(NSURL*)url placeholderImage:(UIImage*)image] 的方法。
问题是图像在 tableView 上显示的比应有的窄,但由于某种原因,选择一行使其大小正确。将行滚动到屏幕外,然后在屏幕上,然后在屏幕外滚动也是如此。
我应该使用什么方法来强制重绘单元格?我发现了一些相互矛盾的想法,但到目前为止都没有奏效。我觉得我错过了对 UITableView 到 UITableViewCell 的简单调用。另外,我在哪里打这个电话?我试过在cellForRowAtIndexPath
和willDisplayCell
打电话。
感谢您的帮助!
SDWebImage:https://github.com/rs/SDWebImage
【问题讨论】:
您的UITableView
是否使用了整个屏幕宽度?表格是哪种类型的(普通/分组)?除了在textLabel
和detailTextLabel
中设置文本之外,单元格中还有其他内容吗?您是否尝试过在内容加载前后调试图片的大小?
如果你想重绘单元格来修复图片加载问题,你可能应该确保在你的图片加载后立即这样做(我不知道有没有delegate
在SDWebImage
可以使用吗?)。
我已经尝试过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] 行为的主要内容,如果未能解决你的问题,请参考以下文章