我需要非常简单的事情 - 表格单元格自动检测自己的高度。这里有很多例子,基本上都是这样说的:“在桌子上设置几个标志和值,并在你的单元格中使用自动布局”。我的情况有点特别 - 我从单独的XIB文件加载单元格的内容,这是一个普通的UIView。第一个问题是当我在界面构建器中创建XIB文件时 - 我不知道如何根据我指定的约束使它成为“计算”的高度。我总是收到IB错误,除非我切换到“自由格式”并将视图调整到与我的约束条件相匹配的高度。如果我不这样做,我会得到以下错误:iOS版表格视图单元格自动高度自定义的子视图
在上述例子中我只需要其高度将是32(图像高度)的图+ 2 * 16(垂直距离约束来自父母的顶部和底部的图像)加上边距。调整在IB的自由视图,直到错误消失似乎是一个肮脏的黑客对我来说,这其实并没有自动布局。作为下一个步骤,我定义了一个电池类,在这里我把这个厦门国际银行看来,这样的事情(抱歉objc代码,几乎完成了移植项目SWIFT):
- (void)awakeFromNib {
[super awakeFromNib];
[[NSBundle mainBundle] loadNibNamed:@"CellContent" owner:self options:nil];
// self.content is an outlet which gets the root of the XIB on load
[self.contentView addSubview:self.content];
self.contentView.translatesAutoresizingMaskIntoConstraints = NO;
[self.contentView.leftAnchor constraintEqualToAnchor:self.content.leftAnchor].active = YES;
[self.contentView.rightAnchor constraintEqualToAnchor:self.content.rightAnchor].active = YES;
[self.contentView.topAnchor constraintEqualToAnchor:self.content.topAnchor].active = YES;
[self.contentView.bottomAnchor constraintEqualToAnchor:self.content.bottomAnchor].active = YES;
}
正如你可能已经猜到,当我运行这个时,单元格高度是一个很大的自由格式,就像在内容XIB的IB中一样,所以没有自动布局。看起来自由曲面高度甚至被添加为另一个约束,并且存在约束冲突,导致其中一些在运行时被破坏。
让我知道如何解决这个问题,轻松地为我的单元格创建内容视图,这些单元格具有自动高度,并且可以嵌入我的单元格中以获得tableView.rowHeight = UITableViewAutomaticDimension
魔法?