我似乎无法想象如何制作包含主题,身体和图像的桌面视图,以便在没有图像将主体和主体放在一起时。见图像auto lay with table prototype
当数据库中有图像时,我想将主题和正文放在一起,然后如果有图像,则主题图像正文
答案 0 :(得分:1)
将标签固定在单元格的顶部和底部。如果没有图像,则设置imageView.isHidden = true。您还可以在UITableViewDelegate.tableview(_:heightForRowAt :)中返回常规单元格高度减去imageView.frame.size.height。
如果您不喜欢方法,只需制作两个不同的tableViewCells,并在拥有图像时使用图像将其取消,而在没有图像时使用不带imageView的图像。
答案 1 :(得分:0)
您可以在tableview的dataSource方法中执行此操作。这样的事情应该有效:
//Model:
var model = [Stuff]
override func tableView(_ tableView: UITableView, cellForRowAt indexPath: IndexPath) -> UITableViewCell {
let cell = tableView.dequeueReusableCell(withIdentifier: "myprototype", for: indexPath)
cell.subjectLabel.text = model[indexPath.row].subject
cell.bodyLabel.text = model[indexPath.row].body
//assuming the image is an optional
if let image = model[indexPath.row].image {
cell.imageView.image = image
}
return cell
}
您可能必须将imageView的autolayout约束设置为具有较低的抗压缩性。
您可能还希望通过在UITableViewDelegate方法中实现以下内容来调整单元格大小:
override func tableView(_ tableView: UITableView, heightForRowAt indexPath: IndexPath) -> CGFloat {
return UITableViewAutomaticDimension
}
override func tableView(_ tableView: UITableView, estimatedHeightForRowAt indexPath: IndexPath) -> CGFloat {
return UITableViewAutomaticDimension
}