我有一个UITableView
和一个UIImageView
。用户可以发布图片,并将其显示在此UITableView
中(类似于社交网络/媒体应用)。
我遇到的问题是,在创建帖子并回到主UITableView
后,重新加载表格时图像显得很小。但是,当我滚动并且该单元格退出屏幕后,它会更新为正确的大小。
因为我正在裁剪图像,并且它们可以是纵向或横向,所以我正在计算图像的比例,除非它们超过特定大小,然后将约束常数设置为设置的大小。
这里有一些代码可以查看我要执行的操作:
override func viewWillAppear(_ animated: Bool) {
super.viewWillAppear(animated)
self.myTableView.reloadData()
}
func tableView(_ tableView: UITableView, cellForRowAt indexPath: IndexPath) -> UITableViewCell {
if let imageCrop = cell.myImageView.image?.getCropRatio() as? CGFloat {
if let height = tableView.frame.size.width / imageCrop as? CGFloat {
if height >= 350 {
cell.myImageHeightConstraint.constant = 350
} else {
cell.myImageHeightConstraint.constant = height
}
}
} else {
cell.myImageHeightConstraint.constant = 350
}
}
func tableView(_ tableView: UITableView, estimatedHeightForRowAt indexPath: IndexPath) -> CGFloat {
return UITableView.automaticDimension
}
func tableView(_ tableView: UITableView, heightForRowAt indexPath: IndexPath) -> CGFloat {
return UITableView.automaticDimension
}
extension UIImage {
func getCropRatio() -> CGFloat {
let widthRatio = CGFloat(self.size.width / self.size.height)
return widthRatio
}
}
更新:
在情节提要中,图像高度设置为<=350。如果将其设置为350或更改优先级,则会得到相反的效果,因此图像始终从350开始,然后在滚动后调整大小。>