更新:此Github链接包含该项目。如果可能的话,下载并点击重新加载,您将了解其中的差异。 Zhang先生感谢你提出“Aspect Scale to Fill”的建议。它对我帮助不大。
我有一个tableview,它以异步方式加载图像(使用AFNetworking UIImageView类别类)。图像首次在可见单元格上进行压缩。一旦我重新加载或滚动操作和向下图像正在根据其大小进行调整。
基本上我会得到不同尺寸的图片。哪个宽度应该是单元格宽度,高度可以是任何
实现了自我调整的所有必要步骤(适当的自动布局约束和适当的委托方法)
//my tableview setup
self.tblTest?.estimatedRowHeight = 1000.0 //i've tried with all possible guesses and
//tried with delegate also
self.tblTest?.rowHeight = UITableViewAutomaticDimension
我添加了以下约束:
在我的测试单元中。
func setUpImage(url:NSURL){
//tried with another function also without NSURLRequest
self.imvTest?.setImageWithURLRequest(NSURLRequest(URL: url),
placeholderImage: UIImage(named: "store_placeholder"),
success: { (requset, response, image) -> Void in
self.imvTest?.image = image
print(image.size)
}, failure: { (error) -> Void in
self.imvTest?.image = nil
})
}
结果
预期
我怎样才能第一次防止图像挤压?
P.S:我觉得每次重新加载表格视图都是正确的,并且正在设置时间图像。
请告诉我我一直缺少的内容和任何内容优先事项等,??
答案 0 :(得分:1)
尝试拨打
tableView.beginUpdates()
tableView.endUpdates()
在成功结束后设置图像
或者在设置图像后使用单元格的indexPath尝试tableView.reloadRowsAtIndexPaths
答案 1 :(得分:0)
我认为正在发生的事情是细胞以其原始内容大小布局。然后异步进入并设置新图像。通常,您在cellForRowAtIndexPath:
中设置单元格的数据,这在单元格布局之前发生。但是当图像以异步方式进入时,布局已经发生,所以为时已晚。
当新图片进入时, 数据已更改 ,因此您需要告诉tableview重新加载数据。
不是重新加载整个tableview,而是可以在图像进入时reload an individual cell。这当然比重新加载整个tableview要高效。