1

UIViewカスタム セルが必要な場合は、通常、セルのコンテンツ ビューにサブクラスを追加します。サブビューのレイアウトにはペン先を使用します。次に、ペン先をUIViewサブクラスに配線します。私の問題は、コンテンツのサイズを動的に変更する方法です。私の見解はそのUILabels中にたくさんあるとしましょう。私はlayoutSubviewsすべてのサブビューを配置するために使用しますが、セルの高さを本当に知るのはそれが完了するまでです。現在tableView:heightForRowAtIndexPath、サブビューと呼び出しをセットアップして、layoutIfNeededすべてが適切に配置されるようにしています。これで、セルの高さがわかり、tableView:heightForRowAtIndexPathメソッドでそれを返します。しかし今、tableView:cellForRowAtIndexPath私が与えられたセルの高さは44.0. サブビューを追加すると、サブビューが親の境界の外にあります。次に、セルが後で iOS で必要な高さにサイズ変更されると、コンテンツが原因で削除されautoresizingMaskます。これが他の人が対処している問題なのか、それとも私が完全に間違ったアプローチをしているのかを理解しようとしています. 高さを要求してから、その高さではないセルを作成するのは逆に思えます。

4

1 に答える 1

2

残念ながら、これが UITableViews の仕組みです: UITableViewCells が実際にレンダリングされる前に、高さを指定する必要があります。そして、はい、誰もがそれに対処しなければなりません。:)

NSArray を作成し、すべてのカスタム contentView を追加frameし、予想される contentView 境界に従ってそれらを設定し、この配列をtableView:heightForRowAtIndexPath:およびのデータ ソースとして使用できますtableView:cellForRowAtIndexPath:。これは正確には効率的ではありませんが、小さなデータ セットでは問題なく機能します。

また、このトピックに関する素晴らしいチュートリアルがあります: UITableViewCell Dynamic Height (by Matt Long)

SO に関する同様の質問: iPhone で可変高さのテーブル セルを適切に実行するにはどうすればよいですか?

于 2012-05-04T00:23:24.140 に答える