2016-04-06 10 views
1

テーブルビューのセルの高さをダイナミックにする方法を尋ねる投稿がたくさんあります。HeightForRowAtIndexPathでそれを実行できることを理解しています。ios swift - テーブルビューセルの動的高さ(デバイスによって異なる)

私の質問は、これが良い方法かどうかです。

iPhone 6 Plusのように、デバイスをチェックしてより多くの部屋を占めることができる高さをハードコードするのは、スケーラブルではないようです。

これはまったく実行すべきか、それとも良い方法ですか? `

答えて

2

TableViewに適切な分数を掛けた高さを設定することができます。 1242×2208ピクセル(414×736ポイント)の寸法を持つiPhone 6 Plus用のセルを設計するとします。今、あなたはあなたのデータが動的に変化しており、あなたは、セルの高さが異なりテーブルビューを設定する必要がある場合は

let heightRatio = UIScreen.mainScreen().bounds.height/736 

のようなあなたの現在実行中のデバイスがそうheightForRowAtIndexPathにあなたは

return yourInterfaceBuilderCellHeight * heightRatio 
+0

すべてのご回答ありがとうございます。マシューズありがとう – Walking

0

テーブルビューのセルの高さをハードコードすることはできません。

あなたのデータならば、各セルの動的なサイズ

0

で練習を持っている方が良いので、あなたのハードコード、コードが将来的に問題となる可能性がある場合は、テーブルビューセル

の高さの完璧な計算で高さを適用すべきです静的であるか、または動的に変更されていない場合、heightForRowAtIndexPath(静的な高さを与える)のハードコードはOKですが、データが変更されている場合は、ハードコードを実行するのは良い方法ではありません。データがそれに収まるように、各行の高さを計算する必要があります。

0

として高さを返すことがWRT heightRatioを推測することができますそのデータの高さにはAppleがこれを解決します。

テーブルビューのプロパティを次のように設定するだけです。

_tableViewOne.estimatedRowHeight = 50; //minimum row height 
_tableViewOne.rowHeight = UITableViewAutomaticDimension; 

ので、それはそれの内容にに従って行高さになります。

そう コードの上にテーブルビューのheightForRowAtIndexPathメソッドを使用しないでください(これは、これらのプロパティをオーバーライドします)動作しません。

高さは他に何もする必要はありません。システムがそれを処理します。

関連する問題