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>

問題のあるセルの 1 つは、次のように単純に見えます。 CustomTableViewCell

制約とハグ優先度/圧縮抵抗は適切に設定されているようです:

ContentView の制約

CustomCell で init:coder/awakeFromNib/layoutSubviews などを実装することからすべてを試し、 このような SO のいくつかの投稿で説明されているように自動サイズ変更をUIViewAutoresizing.FlexibleWidth and UIViewAutoresizing.FlexibleHeight設定するように設定しましたが、何も機能していないようです。また、「壊れた」制約で >= 制約をいじっても役に立ちません。contentView.frame = self.bounds

これは、誰かが迅速な解決策を見つけるのに役立つ場合の別の例です。

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