我有一个使用自动布局的UITableView。我有多种类型的单元格,但是现在让我们使用最简单的单元格,只有UILabel。
在tableView:heightForRowAtIndexPath:
我有以下代码:
[self configureCell:self.detailsCell forRowAtIndexPath:indexPath];
[self.detailsCell layoutIfNeeded];
CGSize size = [self.detailsCell.contentView systemLayoutSizeFittingSize:UILayoutFittingCompressedSize];
return size.height + 1;
反过来调用
- (void)configureCell:(UITableViewCell *)cell forRowAtIndexPath:(NSIndexPath *)indexPath {
// ...
cell.detailsLabel.text = self.data.myText;
cell.detailsLabel.font = [UIFont preferredFontForTextStyle:UIFontTextStyleBody];
// [cell.detailsLabel sizeToFit]; <- I tried this, but didn't help
}
我最终得到了这个:
绿色矩形是实际的单元格。紫色矩形是UILabel。我不想要顶部和底部紫色填充/边距。我怎么能摆脱它?
答案 0 :(得分:5)
你必须小心&#34; 限制边距:&#34;
比较这两张图片:
和
如此无视&#34; constrian到边缘&#34;在添加新约束时,应解决填充/边距问题: - )
如果您愿意,可以使用&#34;编辑/画布/显示布局矩形&#34;来显示这些边距。
没有布局矩形的视图:
和布局矩形设置显示(这说明您的问题非常好)
答案 1 :(得分:0)
您可以将水平中心添加到UILabel。然后设置&#34;大于或等于&#34;关于&#34;顶层空间与superview&#34;的关系,并以相同的方式设置底部空间。构建并运行,您可以看到UILabel的动态高度符合UILabel的内容。
答案 2 :(得分:-1)
边距是由您设置的自动布局限制造成的。在尺寸检查器中将所有边距设置为零。
如果你正在使用Xcode 6&amp;支持iOS 8,约束可能设置为'容器边距'而不是'容器'本身。它略有不同,将容器边距设置为零将对您有用。当您在故事板中设置约束时,可以通过按“Alt。”来切换它们。