1

さて、私は自分の問題を解決するために多くのことを検索してきましたが、有用なものは見つかりませんでした.

画像、テキスト、タイトルなどを自由な順序で含めることができる(またはできない)カスタムセルがあるため、その内容に応じて行の高さを設定する必要があります。次の 2 つのように: http://db.tt/AVBKYuEY http://db.tt/HbnXMMFn

私がそれらを作る唯一の方法は絵コンテです。

そのため、内容全体を呼び出しtableView:cellForRowAtIndex: て設定し、行の高さを設定したいのですが、行の高さがtableView:height...: に設定されているため、実行できません。これは BEFORE と呼ばれますtableView:cellForRowAtIndex:

ところで、ストーリーボードにも制約があるので、それらを使用してセルの高さを数えることができれば素晴らしいと思います。

また、iPhoneを回転させると幅が完全に変わりますが、実際には高さを変更できないのは奇妙です

私の問題を解決するにはどうすればよいですか?

4

1 に答える 1

1

高さは tableView:heightForRowAtIndexPath: で設定できます。そのメソッドでインデックス パスにアクセスできるため、セルにデータを提供する配列のインデックスにアクセスできます。したがって、そのデータを見て、セルの高さを決定するために必要な計算を行い、その値を返す必要があります。

編集後: 複数行のラベルの高さを計算する例を次に示します。一時的なラベルを作成し、この行に含まれるテキストを入力してから、sizeWithFont:constrainedToSize:LineBreakMode: を使用して計算を行います。

-(CGFloat) tableView:(UITableView *)tableView heightForRowAtIndexPath:(NSIndexPath *)indexPath {
    UILabel *label = [[UILabel alloc] init];
    label.numberOfLines = 0; // allows label to have as many lines as needed
    label.text = _objects[indexPath.row][@"detail2"]; // this is the data I'm passing in the detail label
    CGSize labelSize = [label.text sizeWithFont:label.font constrainedToSize:CGSizeMake(300, 300000) lineBreakMode:NSLineBreakByWordWrapping];
    CGFloat h = labelSize.height;
    return h + 50; //50 is base height for my cell with only one line of text, determined empirically
}
于 2012-12-11T16:27:37.620 に答える