Warning: file_get_contents(/data/phpspider/zhask/data//catemap/8/swift/18.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Ios 根据UILabel高度创建自调整大小的表格视图单元格_Ios_Swift_Uitableview - Fatal编程技术网

Ios 根据UILabel高度创建自调整大小的表格视图单元格

Ios 根据UILabel高度创建自调整大小的表格视图单元格,ios,swift,uitableview,Ios,Swift,Uitableview,我正在使用Swift,并且在使我的表视图单元格自动调整大小方面遇到了一些问题。从我在线阅读的内容来看,最好的方法是使用: tableView.rowHeight = UITableViewAutomaticDimension tableView.estimatedRowHeight = 138.0 我已经输入了这个代码,但它似乎不起作用。我在viewDidLoad和cellForRowAt函数中尝试了它。我不确定我是否把它放错了地方,或者我是否设置了错误的东西。我还获得了UILabel集合底部

我正在使用Swift,并且在使我的表视图单元格自动调整大小方面遇到了一些问题。从我在线阅读的内容来看,最好的方法是使用:

tableView.rowHeight = UITableViewAutomaticDimension
tableView.estimatedRowHeight = 138.0
我已经输入了这个代码,但它似乎不起作用。我在viewDidLoad和cellForRowAt函数中尝试了它。我不确定我是否把它放错了地方,或者我是否设置了错误的东西。我还获得了UILabel集合底部相对于容器底部的自动约束,期望单元格容器将增长,但UILabel底部到容器底部的值将保持不变。以下是我当前在TableViewController中的代码:

class TableViewController: UITableViewController {

var data = [TextData]()

override func viewDidLoad() {
    super.viewDidLoad()
    loadSampleData()   
}


    func loadSampleData() {
        let title1 = TextData(title: "Monday", blurb: "Today is Monday and it's a sunny day", photograph: #imageLiteral(resourceName: "mondayone"), article: "Monday Lorem ipsum dolor sit amet, consectetur adipiscing elit, sed do eiusmod tempor incididunt ut labore et dolore magna aliqua. Ut enim ad minim veniam, quis nostrud exercitation ullamco laboris nisi ut aliquip ex ea commodo consequat. Duis aute irure dolor in reprehenderit in voluptate velit esse cillum dolore eu fugiat nulla pariatur.Lorem ipsum dolor sit amet, consectetur adipiscing elit, sed do eiusmod tempor incididunt ut labore et dolore magna aliqua. Ut enim ad minim veniam, quis nostrud exercitation ullamco laboris nisi ut aliquip ex ea commodo consequat.")
        let title2 = TextData(title: "Tuesday", blurb: "Today is Tuesday and it's a bit rainy but will clear up later on today", photograph: #imageLiteral(resourceName: "tuesdaytwo"), article: "Tuesday Lorem ipsum dolor sit amet, consectetur adipiscing elit, sed do eiusmod tempor incididunt ut labore et dolore magna aliqua. Ut enim ad minim veniam, quis nostrud exercitation ullamco laboris nisi ut aliquip ex ea commodo consequat. Duis aute irure dolor in reprehenderit in voluptate velit esse cillum dolore eu fugiat nulla pariatur." )
        let title3 = TextData(title: "Wednesday", blurb: "Today is Wednesday and the umbrella should be handy because it's going to be stormy", photograph: #imageLiteral(resourceName: "wednesdaythree"), article: "Wednesday Lorem ipsum dolor sit amet, consectetur adipiscing elit, sed do eiusmod tempor incididunt ut labore et dolore magna aliqua. Ut enim ad minim veniam, quis nostrud exercitation ullamco laboris nisi ut aliquip ex ea commodo consequat. Duis aute irure dolor in reprehenderit in voluptate velit esse cillum dolore eu fugiat nulla pariatur.")
        let title4 = TextData(title: "Thursday", blurb: "Today is Thursday and it's sunny again, no need for any umbrella today!", photograph: #imageLiteral(resourceName: "thursdayfour"), article: "Thursday Lorem ipsum dolor sit amet, consectetur adipiscing elit, sed do eiusmod tempor incididunt ut labore et dolore magna aliqua. Ut enim ad minim veniam, quis nostrud exercitation ullamco laboris nisi ut aliquip ex ea commodo consequat. Duis aute irure dolor in reprehenderit in voluptate velit esse cillum dolore eu fugiat nulla pariatur.")

        data += [title1, title2, title3, title4]
    }
override func didReceiveMemoryWarning() {
    super.didReceiveMemoryWarning()
}

override func tableView(_ tableView: UITableView, numberOfRowsInSection section: Int) -> Int {
    return data.count
}

override func numberOfSections(in tableView: UITableView) -> Int {
    return 1
}

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

    let realData = data[(indexPath as NSIndexPath).row]

    cell.titleLabel.text = realData.title
    cell.bodyText.text = realData.blurb
    cell.photo.image = realData.photograph

    tableView.rowHeight = UITableViewAutomaticDimension
    tableView.estimatedRowHeight = 138.0

    return cell
}

override func tableView(_ tableView: UITableView, heightForRowAt indexPath: IndexPath) -> CGFloat {
    return UITableViewAutomaticDimension
}
以下是我的tableview当前的外观:

以下是我目前的限制:

当前照片阻止您的手机变得更高。由于photo约束在单元格的顶部和中心,因此使单元格更高始终会使图像更高,但由于图像具有高度约束,photo会阻止单元格变得更高


删除Photo.centerY约束应允许单元格根据标签调整大小。或者,你可以把常数变成一个不等式(≤ 或≥, 不记得是哪个)。如果还没有其他约束条件,这应该限制细胞变小。

当前照片阻止细胞变高。由于photo约束在单元格的顶部和中心,因此使单元格更高始终会使图像更高,但由于图像具有高度约束,photo会阻止单元格变得更高


删除Photo.centerY约束应允许单元格根据标签调整大小。或者,你可以把常数变成一个不等式(≤ 或≥, 不记得是哪个)。如果没有另一个约束,这应该限制单元格变小。

这意味着您的约束(包括标签)不足以从内到外确定单元格的高度。我如何确保我的约束足够@关键是我不知道你的限制是什么。在你的问题中你什么都没说。但它们是问题所在。嘿@matt,我刚刚添加了一个限制条件的屏幕截图。我希望这会更有帮助。正文的行数是多少?这意味着您的约束(包括标签)不足以从内到外确定单元格的高度。我如何确保我的约束足够@关键是我不知道你的限制是什么。在你的问题中你什么都没说。但它们是问题所在。嘿@matt,我刚刚添加了一个限制条件的屏幕截图。我希望这能有点帮助。正文的行数是多少?谢谢!现在这完全有道理了。我没有意识到照片上的限制会对单元格大小产生影响。这无疑提高了我对约束的认识。谢谢非常感谢。现在这完全有道理了。我没有意识到照片上的限制会对单元格大小产生影响。这无疑提高了我对约束的认识。谢谢