iOS> 8:UITableViewAutomaticDimension和layoutIfNeeded问题

时间:2015-05-04 20:51:42

标签: ios uitableview swift uitableviewautomaticdimension

基于this SO post我更新了我的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>

其中一个麻烦的细胞看起来很简单: CustomTableViewCell

约束和拥抱优先/压缩阻力似乎设置得恰到好处:

Constraints on ContentView

我尝试了在CustomCell中实现init:coder / awakeFromNib / layoutSubviews等的所有内容,并将自动调整设置为 UIViewAutoresizing.FlexibleWidth and UIViewAutoresizing.FlexibleHeight还设置了contentView.frame = self.bounds,如SO上的几个帖子所述,例如this one,但似乎没有任何效果。同时玩&gt; =约束&#34;破坏&#34;那些没有帮助。

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

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

老实说,有什么不对?

1 个答案:

答案 0 :(得分:-2)

您不是很清楚,但如果您尝试解决的问题是摆脱控制台中的警告,那么可以通过更改标签约束的优先级来修复Autolayout突破至999.