2016-11-15 5 views
0

異なるセルサイズと異なるセル内容でUITableViewControllerを作りたいと思います。例えばストーリーボードで異なるセルサイズとセル内容を持つUITableViewController

Example Storyboard

TableViewCellsの異なるサイズを定義するためにStoryboardAutoLayoutを使用する方法はありますか? TableViewCellsのコンテンツ(コンテンツがあるUIView)を定義する最良の方法は何ですか? UITableViewのセルを変更するには

+0

あなたは、異なる識別子を持つ別のセルを使用することができます。 – KKRocks

+0

私が知っている、私はまた、細胞がカスタム細胞クラスから来たと言うことをしています。しかし、私は細胞の大きさを変えることはできません。 – user6867907

+0

あなたは何をしたいのか明確にしてください?何か試してみたら、ここにコードを追加してください。 – KKRocks

答えて

2

、あなたは、2つのオプションがあります:A(最高)は、自動レイアウトの制約を自動サイズ調整テーブルビューのセルを使用することです

オプション。

Autosizing UITableViewCell

がオプションAを使用するには、セルのcontentviewは、一例として、コンテンツの表示ですべてのUI要素にクリアトップ&下制約(ここに私の画像を参照)を持っていることを確認する必要があります

タイトルUILabelには、スーパービュー(Cell ContentView)の上部スペースと、サブタイトルとの垂直スペーシングがあります。 SubTitleには、スーパービュー(Cell ContentView)のボトムスペースの制約もあります。

これにより、UI要素のコンテンツビューの下部には、&の上限が設定されているため、セルの自動サイズを変更できます。自動サイズ変更を有効にする

最後のステップは、あなたのUITableViewでこれらの2つのプロパティを設定することです:

self.tableView.estimatedRowHeight = 60.0; 
self.tableView.rowHeight = UITableViewAutomaticDimension; 

estimatedRowHeight値はあなたが本当の大きさに推測できる限り近づける必要があり、これは、計算を少しスピードアップに役立ちます。

オプションBは、UIViewControllerに- (CGFloat)tableView:(UITableView *)tableView heightForRowAtIndexPath:(NSIndexPath *)indexPath;デリゲートを追加することです。

セルの高さを手動で設定する必要があります。あなたは2つの固定高さのちょうど2つの異なるセルを使用している場合は 、あなたが自動車を使用している場合

- (CGFloat)tableView:(UITableView *)tableView heightForRowAtIndexPath:(NSIndexPath *)indexPath { 
    UITableViewCell *cell = [tableView cellForRowAtIndexPath:indexPath]; 
    if ([cell isKindOfClass:[MyCustomCellTypeAClass class]]) { 
     return 44; 
    } 
    else { 
     return 100; 
    } 
} 
0

...セルを検出し、高さを返すために、あなたにも、オプションBを使用することができますし、そこにはロジックを追加します-layout、高さは制約を使って計算されます(正しく設定した場合)。デリゲートメソッドを次のように使用する必要があります。

func tableView(tableView: UITableView, heightForRowAtIndexPath indexPath: NSIndexPath) -> CGFloat { 
    return UITableViewAutomaticDimension 
} 
関連する問題