快速的tableview图像和标签

时间:2016-11-15 23:57:57

标签: swift xcode tableview

我似乎无法想象如何制作包含主题,身体和图像的桌面视图,以便在没有图像将主体和主体放在一起时。见图像auto lay with table prototype

当数据库中有图像时,我想将主题和正文放在一起,然后如果有图像,则主题图像正文

2 个答案:

答案 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
}