在我看来你没有添加vertical的限制commentTextLabel
?你只有这个:
//Comment text
[self.contentView addConstraints:[NSLayoutConstraint constraintsWithVisualFormat:@"H:[picture]-5-[text]-0-|" options:0 metrics:nil views:views]];
尝试设置一个垂直约束 - 很可能你会遇到约束不足的错误,并且 iOS 8 比 iOS 7 更好地猜测高度。此外,如果你要向视图添加约束,则不必调用sizeToFit
吸气剂内。
该项目中未使用自动布局,所有约束均以编程方式完成。
即使您仅以编程方式添加约束,您仍在使用自动布局。 :)
回应编辑
您的垂直高度限制不足 - 您只指定了commentTextLabel
但不是它的 y 坐标。请记住,自动布局的主要目标是提供一套完整的约束,以便 iOS 可以计算视图的 x、y、宽度和高度。
我认为你的限制总体上是搞砸了。 :) 尝试将这些规则添加到内容视图中(我只使用 5 作为填充):
H:|-5-[picture(38)]-5-[username]-5-[timePublished]-5-|
H:[picture]-5-[text]-5-|
H:|-5-[seeMore]-5-|
V:|-5-[username]-5-[text]-5-[seeMore]-5-|
V:|-5-[picture(38)]
另外,添加你的约束setupViews
--你应该只需要添加一次约束并且只修改它们updateConstraints
。我认为updateConstraints
每次都会被调用layoutSubviews
被调用,以便每次刷新单元格布局时都会添加约束。
回应编辑
您的标签的自动换行样式也必须设置。从里面commentTextLabel
, add
_commentTextLabel.lineBreakMode = NSLineBreakByWordWrapping;
始终将其与numberOfLines = 0
如果你想要一个具有动态高度的 UILabel。
您还需要通过设置该标签的值来右对齐 seeMore 标签(它占据单元格的整个宽度减去填充)alignment
财产。
现在尝试提供一个更大的假高度——也许是 150 或 200,而不是 85,这样我们就可以看到所有元素。
对于 timePublished 标签,我忘记指出以下垂直约束:
V:|-5-[timePublished]