4

基于这篇 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>

其中一个麻烦的单元看起来就像这样简单: 自定义表格视图单元格

约束和拥抱优先级/压缩阻力似乎设置得当:

ContentView 的约束

我尝试了一切,从在我的 CustomCell 中实现 init:coder/awakeFromNib/layoutSubviews 等,并将自动调整大小设置为 UIViewAutoresizing.FlexibleWidth and UIViewAutoresizing.FlexibleHeight还设置了contentView.frame = self.boundsSO 上的几篇文章中所述的设置,例如这篇文章,但似乎没有任何效果。在“破碎”的约束上玩 >= 也无济于事。

这是另一个示例,以防它帮助某人找到快速解决方案:

(
    "<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 )>

老实说,怎么了?

4

1 回答 1

-2

你不是很清楚,但如果你试图解决的问题是摆脱控制台中的警告,那么可以通过将自动布局打破的标签约束的优先级更改为 999 来解决。

于 2015-05-05T07:57:31.127 回答