使用和不使用图像动态调整TableViewCell的大小

时间:2017-09-16 19:05:11

标签: ios swift uitableview

使用swift3,我想允许用户创建图片或简单文本帖子的帖子。我有一切正常工作,除了当我创建一个文本的帖子时,单元格中的UIImageView填充TableViewCell中的空间。理想情况下,如果用户创建一个仅包含文本的帖子,TableViewCell将只包含标题标签的所有内容,而不包括UIImageView(参见图像)。我怎么能这样做呢。

研究: https://www.youtube.com/watch?v=zAWO9rldyUEhttps://www.youtube.com/watch?v=TEMUOaamcDAhttps://www.raywenderlich.com/129059/self-sizing-table-view-cells

当前代码

{{1}}

enter image description here

1 个答案:

答案 0 :(得分:1)

我看到您正在使用故事板创建UI,在这种情况下,您可以为UIImageView添加高度约束(确保将其连接到您的单元格以便在代码中使用它)和在需要时更改tableview的约束和高度。

class MyCell: UITableViewCell {

    @IBOutlet var postImage: UIImageView!
    @IBOutlet var postImageHeight: NSLayoutConstraint!
}


class ViewController: UITableViewController {

     var dataSource: [Model] = []

    override func tableView(_ tableView: UITableView, heightForRowAt indexPath: IndexPath) -> CGFloat {
        //Cell without image
        if dataSource[indexPath.row].image == nil {
            return 200
        }
        //Cell with image
        return 350
    }

    override func tableView(_ tableView: UITableView, cellForRowAt indexPath: IndexPath) -> UITableViewCell {
        let cell = tableView.dequeueReusableCell(withIdentifier: "MyCell", for: indexPath) as! MyCell

        //Adjust the height constraint of the imageview within your cell
        if dataSource[indexPath.row].image == nil {
            cell.postImageHeight.constant == 0
        }else{
            cell.postImageHeight.constant == 150
        }
        return cell
    }
}