6

カスタム UITableViewCells の 1 つが tableView:cellForRowAtIndexPath によって描画されるたびに: コンソールは NSLayoutConstraint の不整合を大量に吐き出します。私はこれらのほとんどを理解しています:

 Unable to simultaneously satisfy constraints. ...boring stuff..

 "<NSLayoutConstraint:0x8b0eb60 V:|-(NSSpace(20))-[UILabel:0x8b0cb30]   (Names: '|':UITableViewCellContentView:0x8bd7d40 )>",
"<NSLayoutConstraint:0x8b0db70 V:[UILabel:0x8b0cb30]-(NSSpace(8))-[UITextView:0x91dba00]>",
"<NSLayoutConstraint:0x8b0dba0 V:[UITextView:0x91dba00]-(NSSpace(20))-|   (Names: '|':UITableViewCellContentView:0x8bd7d40 )>",
"<NSLayoutConstraint:0x8b0d5a0 V:[UITextView:0x91dba00(1000)]>",
"<NSAutoresizingMaskLayoutConstraint:0x8b00330 h=--& v=--& V:[UITableViewCellContentView:0x8bd7d40(44)]>"
)

Will attempt to recover by breaking constraint 
<NSLayoutConstraint:0x8b0db70 V:[UILabel:0x8b0cb30]-(NSSpace(8))-[UITextView:0x91dba00]>

または、少なくとも私はそうだと思います。私を本当に困惑させているのは、私の UITableViewCell が機能していて、制約が壊れているように見えないことです。エラーにリストされているいくつかの制約、特に最後のものは、システムによって追加された制約だと思います。.xibs を使用せず、コードに制約を追加しただけの場合、これは可能ですか? 各コードの高さを動的に生成しているため、エラーの最後の行が特に目立ちますが、デフォルトのセルの高さである 44 に気付きました。

[super updateConstraints]これらの制約のいくつかはデフォルトで追加されていますか?たとえば、 を呼び出すときなどです。これらのエラーを解決したり、エラーの原因を特定したりするにはどうすればよいですか?

余談ですが、Core Text に浸すと、私の UITextView + Auto Layout ソリューションよりもはるかに優れたパフォーマンスを発揮することを理解しています。今のところ、セルの高さのキャッシュに取り組んでいます。ただし、これらのレイアウトエラーがスクロール中にラグを引き起こしている可能性がありますか?それは単に、自動レイアウトを使用して画面に表示される各セルの高さを計算しているためですか?

これらのエラーが発生しているプロジェクトをGithubに投稿しました.

4

1 に答える 1