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