2009-05-23 14 views
23

iPhoneでは、特定のアクセサリビュー(公開インジケータなど)が表示されているときに、テーブルビューのセルのコンテンツビューの幅をどのように把握しますか?UITableViewCellのcontentViewの幅が指定されたアクセサリタイプの場合

ラッピング、可変長テキストを含むセルの正しいセルの高さを計算するには、これが必要です。しかし、テーブルビューのデリゲートにセルの高さが要求されると、実際には実際のセルインスタンスがないため、コンテンツビューの境界を直接照会することはできません。

公開インジケータを使用して、プレーンスタイルのテーブルビューでは縦向きで正確なように見えますが、正しい方法で行うことをお勧めしますアップルがマージンを微調整しようと決めたら、動いている。

(これはthis questionに関連している。)

答えて

2

個人的には、私は値をハードコードするだけです。よりシンプルで物事は予測可能な方法で壊れます。

これをプログラムで行うには、UITableViewCellを作成し、測定する必要がある編集プロパティ/アクセサリビューを設定してから、contentViewの大きさを尋ねます。

もちろん、私はおそらくこれをキャッシュしていますが、UITableViewが高さの情報を聞いてきたら、割り振りをしています。私にはゆっくりと聞こえます(いつものようにプロファイラーでチェックしてください)。

+0

ええ、私はこれを(20ピクセルです)ハードコーディングしてしまいました。 私はこれを最初に試していたときに説明したようなダミーセルを作成しようとしたと思います。正しく覚えていれば動作しませんでした。私はレイアウトは、セルが実際にテーブルビューで表示されるときにのみ設定されると思う。 –

+0

ああよく!あなたが解決策を見つけたと聞いてうれしい。 –

0

私はそのすべてのサブ要素を保持しているのUITableViewCellのサブクラスを持っているでしょう。セルが入力され、編集モードが存在するとき、特定の要素のフレームを移動できます。これの良い例は、AppleのTable Viewプログラミングガイドのカスタムテーブルビューセルを作成するセクションの下にあります。

0

UITableViewCellのcontentViewプロパティは、ラベルなどを含むビューだと思うので、その幅は使用可能なサイズにする必要があります。

+0

問題は、テーブルビューのデリゲートは、表示されないセルの高さを知る必要があるため、contentViewを取得する実際のセルインスタンスがないことです。私は_a_可視のセルのcontentViewを取得し、他のすべてのセルが同じcontentView幅を持つと仮定します。 –

+0

デリゲートからheightメソッドを削除した後、後でUITableView –

+0

@Edのメソッドを使用して、セルを設定するときに高さを設定できます。テーブルビューのデリゲートは、スクロールビューが正しい寸法になるように、それらのセルが設定される前のすべてのセルの高さ。 –

関連する問題