AutoLayout不符合UITableView单元格的内容

时间:2016-05-19 15:38:25

标签: ios swift uitableview autolayout

我试图按照我在这里阅读的关于如何内容适合UITableView单元格的内容。但是,单元格仍然是裁剪内容。见下文:

单元格:(连接到我的自定义单元格类) enter image description here

约束:(所有约束设置为ContentView) enter image description here

自定义单元格类:

    import UIKit

class S360SSessionTableCell: UITableViewCell {

    @IBOutlet var iconImg:UIImageView!
    @IBOutlet var locationLbl:UILabel!
    @IBOutlet var dateLbl:UILabel!
    @IBOutlet var startTimeLbl:UILabel!
    @IBOutlet var endTimeLbl:UILabel!

    override func awakeFromNib() {
        super.awakeFromNib()
    }

    override func setSelected(selected: Bool, animated: Bool) {
        super.setSelected(selected, animated: animated)

    }

}

实施: 这些是唯一与表相关的方法。另外,我在viewDidLoad中有这个:myTableView.estimatedRowHeight = 100.0

//Table Datasource
    func tableView(tableView: UITableView, cellForRowAtIndexPath indexPath: NSIndexPath) -> UITableViewCell {

        var cell:S360SSessionTableCell? = tableView.dequeueReusableCellWithIdentifier("S360SSessionTableCell") as? S360SSessionTableCell

        if ((cell == nil)){
            tableView.registerNib(UINib(nibName: XIBFiles.SESSIONTABLECELL, bundle: nil), forCellReuseIdentifier: "S360SSessionTableCell")
            cell = tableView.dequeueReusableCellWithIdentifier("S360SSessionTableCell") as? S360SSessionTableCell
        }

        var session = sessions[indexPath.row]
        cell!.locationLbl.text = (session["location"] as! String) + " - " + "Court " + (String(session["subname"]))
        dateFormatter.dateFormat = "MMM. dd, yyyy"
        cell!.dateLbl.text = dateFormatter.stringFromDate(session["startDate"] as! NSDate)
        dateFormatter.dateFormat = "hh:mm a"
        cell!.startTimeLbl.text = dateFormatter.stringFromDate(session["startDate"] as! NSDate)
        cell!.endTimeLbl.text = dateFormatter.stringFromDate(session["endDate"] as! NSDate)

        return cell!
    }

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

然而,细胞仍然会被剪裁,如下所示:

enter image description here

我的目标是iOS9.3,我的理解是使用AutoLayout,单元格高度的默认值是自动内容匹配,这是iOS8.0更改的一项优势。

我在哪里错了?我希望单元格适合他们拥有的内容而不是剪辑它。

2 个答案:

答案 0 :(得分:1)

从细胞顶部到底部应该存在直接的约束条件。换句话说,Ray Wenderlich的这张图片很好地说明了image

来自Ray Wenderlich

  

此外,您需要从contentView的顶部到底部进行清晰的约束。这可确保自动布局根据其子视图正确确定contentView的高度。

答案 1 :(得分:0)

除了给出答案,您可以尝试以下其他方式, 相应地将约束应用于子视图和标签,并在viewdid中显示以下内容,

tableView.estimatedRowHeight = 85.0
tableView.rowHeight = UITableViewAutomaticDimension

请参阅以下链接了解更多详情,

Working with Self-Sizing Table View Cells

您还可以查看以下样本 Table View Cells with Varying Row Heights