自定义UITableViewCell永远不会出现AutoLayout自我调整大小

时间:2015-08-28 06:34:32

标签: ios uitableview

我一直试图让一个非常基本的自我调整大小的UITableViewCell显示在一个表格中,但自定义单元格甚至不会出现。

我正在使用iOS 8,并且不担心实现委托高度函数。当我使用默认的UITableViewCell时,我的UITableView代码工作,所以我假设问题出现在我的UITableViewCell中,但它很简单,我不确定是怎么回事。< / p>

这里是具有约束的单元格(对于内容视图 - 我尝试上调/下调优先级,但没有任何帮助): Very bright label

这是TableViewController中的nib加载代码:

[submissionTable registerNib: [UINib nibWithNibName:@"SimpleCell" bundle:nil] forCellReuseIdentifier:@"SimpleCell"];

// These two lines are required for autolayout sizing:
submissionTable.rowHeight = UITableViewAutomaticDimension;
submissionTable.estimatedRowHeight = 44;

这是UITableViewCell的代码(我说它很简单!)

class SimpleCell: UITableViewCell   {
    override func awakeFromNib() {
        super.awakeFromNib()
        // Initialization code
    }

    override func setSelected(selected: Bool, animated: Bool) {
        super.setSelected(selected, animated: animated)
        // Configure the view for the selected state
    }

    override init(style: UITableViewCellStyle, reuseIdentifier: String?) {
        super.init(style: style, reuseIdentifier:reuseIdentifier);
        self.setTranslatesAutoresizingMaskIntoConstraints(false)
    }

    required init(coder aDecoder: NSCoder) {
        super.init(coder: aDecoder);
        self.setTranslatesAutoresizingMaskIntoConstraints(false)
    }
}

最后,这是一个相当令人沮丧(和意外)的结果: Huge depressing table cell

具有以下不可满足的约束作为两个错误。问题是,这些似乎很容易满足:

"<NSLayoutConstraint:0x7aef78b0 UITableViewCellContentView:0x7a79fae0.trailingMargin == UILabel:0x7ae36b10'Label label label label l...'.trailing>",
"<NSLayoutConstraint:0x7aef78e0 UILabel:0x7ae36b10'Label label label label l...'.leading == UITableViewCellContentView:0x7a79fae0.leadingMargin>",
"<NSLayoutConstraint:0x7a94db00 'UIView-Encapsulated-Layout-Width' H:[UITableViewCellContentView:0x7a79fae0(0)]>"


"<NSLayoutConstraint:0x7aef6250 UITableViewCellContentView:0x7a79fae0.bottomMargin == UILabel:0x7ae36b10'Label label label label l...'.bottom>",
"<NSLayoutConstraint:0x7aef6280 UILabel:0x7ae36b10'Label label label label l...'.top == UITableViewCellContentView:0x7a79fae0.topMargin>",
"<NSLayoutConstraint:0x7a94db30 'UIView-Encapsulated-Layout-Height' V:[UITableViewCellContentView:0x7a79fae0(0.5)]>"

注意/编辑: 由于第1点,我接受了下面的答案。出于某种原因,setTranslatesAutoresizingMaskIntoConstraints(false)实际上打破了它。

1 个答案:

答案 0 :(得分:0)

  1. 如果您正在使用带有xib的autolayout,那么这些代码是不合格的。

    self.setTranslatesAutoresizingMaskIntoConstraints(假)。

  2. 我发现H:[UITableViewCellContentView:0x7a79fae0(0)]&gt;“,

  3. 这意味着您的contentView的高度为0 你的CellHeight方法可能有问题。
    尝试实现TableViewDelegate以返回单元格的高度而不是使用UITableViewAutomaticDimension