iOS6では、グループ化されたテーブル スタイルの cellForRowAtIndexPath でセルの幅を取得できないようです。セルまたはその contentview のフレームまたは境界をログに記録すると、iPad でも 320 が返されます。テキストサイズを計算する必要があるため、どのデバイスでもセル幅をプログラムで決定する必要があります。cellForRowAtIndexpath でグループ化されたテーブルビューの正しいセル幅を取得するためのアドバイスをいただければ幸いです。
1 に答える
使用している方法は、ビューに関連するあらゆる種類の制約を計算するのに間違った場所です。この-tableView:cellForRowAtIndexPath:
メソッドは、テーブルビューのデータソースの一部であり、デリゲートではありません。ここでは、フレームなどを意味のあるものとして信頼することはできません。これは、セルの/data/を構成する場所としての意味があります。
フレームなどを表示するために計算を行う必要があり、のカスタムサブクラスを使用していない場合UITableViewCell
(つまり、ビューをデフォルトのインスタンスに追加しUITableViewCell
たり、ストックビューを構成したりするだけの場合)、フレーム関連の設定を行います。 / /delegate/コールバック-tableView:willDisplayCell:forRowAtIndexPath:
メソッドで特定の属性を表示します。これは、セルの表示/ビュー関連のプロパティを構成する場所であり、セルの正確なレイアウト情報が得られます(境界が正しくなり、内部ビューのレイアウト/構成が完了します)。 )。
すでにカスタムサブクラスがある場合は、正確なニーズに応じて、上記のデリゲートコールバックでビュー関連のプロパティ設定を行うか、UIView
のメソッドで行うことができます。-layoutSubviews
詳細については、-tableView:willDisplayCell:forRowAtIndexPath:のドキュメントを参照してください。