ios 8(UITableViewCell):对于tableview单元格的内容视图,约束模糊地建议高度为零

时间:2014-10-15 06:31:03

标签: objective-c uitableview ios8 autolayout

我有一个使用自动布局约束的tableview,每个东西都在iOS 7中工作,但是当我在iOS 8中测试时,请给我以下警告

仅警告一次: 检测到约束模糊地建议tableview单元格内容视图的高度为零的情况。我们正在考虑无意中崩溃并使用标准高度。

在我对此问题进行深入调查后,我发现应该只在iOS8的viewdidload中添加以下行

 self.tableView.rowHeight = UITableViewAutomaticDimension;

 self.tableView.estimatedRowHeight = 87;

之后我仍然得到这个警告,并且单元格的高度不正确,这不是从故事板中获取高度

有关UITableViewCell的更多信息,请在下面找到我们对内容视图单元格的约束

-(void) updateConstraints {
    [super updateConstraints];


    if(!didSetupConstraints ) {
       didSetupConstraints = YES;


    [self.contentView removeConstraints:self.contentView.constraints];
    // Interval Title
    //Leading
    constraint = [NSLayoutConstraint constraintWithItem:self.intervalTitle attribute:NSLayoutAttributeCenterX relatedBy:NSLayoutRelationEqual toItem:self.contentView attribute:NSLayoutAttributeCenterX multiplier: 1.0 constant:0.0];
        [self.contentView addConstraint:constraint];

     //Top
    constraint = [NSLayoutConstraint constraintWithItem:self.intervalTitle attribute:NSLayoutAttributeTop relatedBy:NSLayoutRelationEqual toItem:self.marketLocationTitle attribute:NSLayoutAttributeTop multiplier:1.0 constant:0.0];
        [self.contentView addConstraint:constraint];
}

1 个答案:

答案 0 :(得分:8)

自动布局就是那个。对于标签,无法从.CenterX.Top计算单元格的高度。解决此问题的一种方法是删除现有的.CenterX约束并添加新的.Bottom约束。这样,自动布局可以轻松计算单元格的高度。