基于这篇 SO 帖子,我更新了我的 TableViewControllers 以在填充我的自定义 tableviewcells 后始终调用 layoutIfNeeded。事实上,这是使用多个多行标签正确渲染单元格的唯一方法。
单元格现在呈现正确,但我的控制台充斥着我无法修复的损坏的约束消息。
例如:
(
"<NSLayoutConstraint:0x167c1f20 UILabel:0x166bf820'Intendant des Wolfgang Bo...'.leading == UITableViewCellContentView:0x167b6de0.leadingMargin>",
"<NSLayoutConstraint:0x167c44b0 UILabel:0x166bf820'Intendant des Wolfgang Bo...'.trailing == UITableViewCellContentView:0x167b6de0.trailingMargin>",
"<NSLayoutConstraint:0x167c0af0 'UIView-Encapsulated-Layout-Width' H:[UITableViewCellContentView:0x167b6de0(0)]>"
)
Will attempt to recover by breaking constraint
<NSLayoutConstraint:0x167c44b0 UILabel:0x166bf820'Intendant des Wolfgang
Bo...'.trailing == UITableViewCellContentView:0x167b6de0.trailingMargin>
其中一个麻烦的单元看起来就像这样简单:
约束和拥抱优先级/压缩阻力似乎设置得当:
我尝试了一切,从在我的 CustomCell 中实现 init:coder/awakeFromNib/layoutSubviews 等,并将自动调整大小设置为
UIViewAutoresizing.FlexibleWidth and UIViewAutoresizing.FlexibleHeight
还设置了contentView.frame = self.bounds
SO 上的几篇文章中所述的设置,例如这篇文章,但似乎没有任何效果。在“破碎”的约束上玩 >= 也无济于事。
这是另一个示例,以防它帮助某人找到快速解决方案:
(
"<NSLayoutConstraint:0x1624f800 H:[UILabel:0x16143b60'27. April 2015 \U00b7 spiegell...']-(8)-| (Names: '|':UITableViewCellContentView:0x1616f1b0 )>",
"<NSLayoutConstraint:0x14f022e0 H:|-(8)-[UILabel:0x16143b60'27. April 2015 \U00b7 spiegell...'] (Names: '|':UITableViewCellContentView:0x1616f1b0 )>",
"<NSLayoutConstraint:0x14d95bf0 'UIView-Encapsulated-Layout-Width' H:[UITableViewCellContentView:0x1616f1b0(0)]>"
)
Will attempt to recover by breaking constraint
<NSLayoutConstraint:0x1624f800 H:[UILabel:0x16143b60'27. April 2015 · spiegell...']-(8)-| (Names: '|':UITableViewCellContentView:0x1616f1b0 )>
老实说,怎么了?