この 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 つは、次のように単純に見えます。
制約とハグ優先度/圧縮抵抗は適切に設定されているようです:
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 )>
正直、どうしたの?