私はUIViewController 1
を持っています、それはscroll view
を持っています。このscrollview
の中には、container view
に固定されたtop/bottom leading/trailing
があります(高さは固定されていません)。 Container view
にはUITableView
がtop/bottom trailing/leading
とheight constraint with 0 constant
に固定されており、updateViewConstraints
でコンテンツサイズの高さに変更されます。
UIViewController 1のビューが表示されると、コンテナビューには次の制約があります。
NSLayoutConstraint:0x7b03e5f0 V:[UITableView:0x7c42a200(54)]、NSLayoutConstraint:0x7b0ba120 V:|-(0)-[UITableView:0x7c42a200](名前: '|':UIView:0x7b0b7000)、NSLayoutConstraint:0x7b0ba1b0 V:[UI 0x7c42a200]-(0)-| (名前: '|':UIView:0x7b0b7000)、NSLayoutConstraint:0x7b65f900'UIView-Encapsulated-Layout-Height 'V:[UIView:0x7b0b7000(0)]
制約を破って回復を試みます
NSLayoutConstraint:0x7b03e5f0 V:[UITableView:0x7c42a200(54)]
UIView-Encapsulated-Layout-Heigh
tとは何ですか?どうすればスキップできますか?「正しい」制約(コンテンツサイズの高さに更新する)が壊れているためです。ありがとうございます。
最後に私はこの問題を解決します。
1。 tableView設定で、_tableView.estimatedRowHeight = 100
_を設定します。
2。セルの最後のビューで、make.bottom.equalTo(contentView).priority(999)
を設定します。
3。あなたのコードを実行してください、多分それは大丈夫です!
ついに問題を見つけました。コンテナビューにサブビューとして追加されたビューはtranslatesAutoresizingMaskIntoConstraints = YESであるため、NSLayoutConstraint:0x7b65f900'UIView-Encapsulated-Layout-Height 'V:[UIView:0x7b0b7000(0)]が表示され、いくつかの問題が発生しました。ランタイム属性translatesAutoresizingMaskIntoConstraints = NOを追加すると、問題が修正されます。
セルのtranslatesAutoresizingMaskIntoConstraints
にcontentView
を手動で設定したり、このビューの高さを手動で調整したりするのではなく、テーブルビューにestimatedRowHeight
とrowHeight
を設定するだけです。 、WWDC 2014ビデオで説明されているように テーブルビューとコレクションビューの新機能 :
- (void)viewDidLoad {
[super viewDidLoad];
self.tableView.estimatedRowHeight = 44;
self.tableView.rowHeight = UITableViewAutomaticDimension;
}
次に、そのセルに適用する完全修飾制約により、行の高さが調整され、これらの迷惑な警告が排除されます。
コンテナビューの高さの制約を設定します。上記の高さ制約のIBOutletを作成し、「containerViewHeightConstraint」などと呼びます。テーブルビューの高さ制約を54に更新するときは、次のように言います。
self.containerViewHeightConstraint.constant = 54.0;
これらの問題は、制約間に衝突がある場合に発生します。
あなたの場合、テーブルビューに必要な制約を満たす内部テーブルビューに上部/下部の先行/末尾制約をすでに与えているので、もう1つの制約(定数0の固定高さ制約)を提供する必要はありません。
NSLayoutConstraint:0x7b03e5f0 V:[UITableView:0x7c42a200(54)], NSLayoutConstraint:0x7b0ba120 V:|-(0)-[UITableView:0x7c42a200]
上記の2行は、定数0のテーブルビューの垂直方向に衝突があることを意味します。
これを解決する2つの方法、
1-高さの制約を削除し、下部の制約を最初からゼロに設定します。下部拘束の出口を取り、下部拘束値を動的に設定します。
2-下部スペースの制約を削除し、高さの制約をゼロに設定します。高さ制約の出口を取り、テーブルビューの高さを動的に設定します。
これがお役に立てば幸いです。