我在UITableViewCell中有一个UIImageview,它的高度需要根据图像的大小而改变,所以我做了
override func viewDidLoad() {
...
tableView.estimatedRowHeight = 500.0 //arbitrary value
tableView.rowHeight = UITableViewAutomaticDimension
}
func tableView(_ tableView: UITableView, heightForRowAt indexPath: IndexPath) -> CGFloat {
return UITableViewAutomaticDimension
}
func tableView(_ tableView: UITableView, cellForRowAt indexPath: IndexPath) -> UITableViewCell {
//change height of UIImageView
let image_width = homeViewCell.mainImageView.frame.size.width
let image_height = image_width * CGFloat(viewModel.imageScale)
homeViewCell.mainImageView.frame.size.height = image_width * CGFloat(viewModel.imageScale)
//load image
_ = homeViewCell.mainImageView.af_setImage(withURL: URL(string: serverURL + viewModel.mainImage)!, placeholderImage: UIImage(named : "home_placeholder") ...
}
在情节提要中,我将imageview的高度限制设置为固定数字,将内容模式设置为“缩放比例”
这不会根据图像的大小调整UIImageView的大小。
答案 0 :(得分:0)
由于您使用的是自动布局约束,因此需要更新高度约束,而不是图像视图框架。因此,将您的高度约束连接为tableViewCell中的IBOutlet
heightConstraint
。然后在表视图cellForRowAt
中必须设置cell.heightConstraint.constant = image_height
。这将给您想要的结果。
func tableView(_ tableView: UITableView, cellForRowAt indexPath: IndexPath) -> UITableViewCell {
// don't forget to dequeue your table view cell here
//change height of UIImageView
let image_height = image_width * CGFloat(viewModel.imageScale)
cell.heightConstraint.constant = image_height
//load image
_ = homeViewCell.mainImageView.af_setImage(withURL: URL(string: serverURL + viewModel.mainImage)!, placeholderImage: UIImage(named : "home_placeholder") ...
}