Ios 如何在Swift中创建动态大小UITableViewCell?

Ios 如何在Swift中创建动态大小UITableViewCell?,ios,swift,uitableview,Ios,Swift,Uitableview,我试图以编程方式创建一个具有动态大小和视图的表。问题是“自动高度”不起作用。创建具有更多视图的单元时,如何确保单元高度保持正确 下面是它的外观: 这是我的密码: import SnapKit class FeedTableViewController: UITableViewController { override func viewDidLoad() { super.viewDidLoad() tableView.rowHeight = UITabl

我试图以编程方式创建一个具有动态大小和视图的表。问题是“自动高度”不起作用。创建具有更多视图的单元时,如何确保单元高度保持正确

下面是它的外观:

这是我的密码:

import SnapKit
class FeedTableViewController: UITableViewController {
    override func viewDidLoad() {
        super.viewDidLoad()
        tableView.rowHeight = UITableViewAutomaticDimension
        tableView.estimatedRowHeight = 500
        tableView.allowsSelection = false
    }

    override func tableView(tableView: UITableView, cellForRowAtIndexPath indexPath: NSIndexPath) -> UITableViewCell {
        let cell = tableView.dequeueReusableCellWithIdentifier("appDataCell", forIndexPath: indexPath) as! AppDataTableViewCell
        let view =  cell.inner
        cell.ivLogo.kf_setImageWithURL(NSURL(string: "http://creativosestrategicos.com/wp-content/uploads/2015/08/sample-logo-black16-300x58.png")!)
        cell.tvLabel.text = "Post Title"


        let label = UILabel()
        label.text = "Test"
        view.addSubview(label)
        label.snp_makeConstraints { (make) in
            make.top.equalTo(view)
            make.left.equalTo(view)
            make.right.equalTo(view)
        }

        return cell
    }
}
这是我的故事板:

您应该覆盖高度方法

 func tableView(tableView: UITableView, heightForRowAtIndexPath indexPath: NSIndexPath) -> CGFloat {
        return 100 /// 100 is your value here
    }

您应该替代高度方法

 func tableView(tableView: UITableView, heightForRowAtIndexPath indexPath: NSIndexPath) -> CGFloat {
        return 100 /// 100 is your value here
    }

您使用了错误的委托方法使用tableView:estimatedHeightForRowAtIndexPath:并返回UITableViewAutomaticDimension。只有在您提供了正确的约束时,此方法才会起作用。

您使用了错误的委托方法使用tableView:estimatedHeightForRowAtIndexPath:并返回UITableViewAutomaticDimension。仅当您已经给出了正确的约束

,但它不是静态的。视图是以编程方式添加的,因此应该是动态大小。计算值并将其传递给该函数,然后我更喜欢使用UITableViewAutomaticDimension,因为内部视图将变得极其复杂,并且很难计算值。为什么要以编程方式添加视图?我认为应该将视图放在prototype单元格中,并在CellForRowatineXpath中为其设置数据。它们是从服务器加载的,依赖于数据。但它不是静态的。视图是以编程方式添加的,因此应该是动态大小。计算值并将其传递给该函数,然后我更喜欢使用UITableViewAutomaticDimension,因为内部视图将变得极其复杂,并且很难计算值。为什么要以编程方式添加视图?我认为您应该将视图放在prototype单元格中,并在CellForRowatindexpath中为其设置数据。它们是从服务器加载的,依赖于数据。此链接可能帮助您计算动态单元格的高度此链接可能帮助您计算动态单元格的高度