0

UITableView3 つのタイプの custom からロードするアプリケーションがありますcells。そのために 3 つのカスタム クラスを作成し、レイアウトsubviewメソッドを使用してすべての要素を Programmatic に追加しました。しかし問題は、3つすべてにテキストビューがあることです。変数にすることができます。そのテキスト ビュー コンテンツの後に、ボタンとlabel. 私はできますが、コンテンツビューのサイズに応じてセルのサイズを大きくするにはどうすればよいですか?

4

3 に答える 3

2

カスタム セルの高さがテーブル ビューの各セルの高さと同じであることを確認してください。

次の関数を使用して、テーブル ビューのセルの高さを調整できます。

- (CGFloat)tableView:(UITableView *)tableView heightForRowAtIndexPath:(NSIndexPath *)indexPath
{
    return height;
}

このようなコードを使用できます。

- (CGFloat)tableView:(UITableView *)tableView heightForRowAtIndexPath:(NSIndexPath *)indexPath
{
    Defination *definition = [self.dataSource objectAtIndex:indexPath.row];
    NSString *detailString = definition.detailString;
    CGSize detailSize;
    detailSize = [detailString sizeWithFont:fontSize(12.0) constrainedToSize:CGSizeMake(420, MAXFLOAT) lineBreakMode:UILineBreakModeWordWrap];

    return detailSize.height + 20.0;
}
于 2012-11-19T10:29:04.373 に答える
0

より複雑なセルを測定する別の例を追加します。私の測定コードは100%正しいわけではありませんが、アプローチを示しています

+ (CGFloat)calculatedCellHeightForTweet:(id)tweet width:(CGFloat)width {
//text
CGSize s1 = [tweet[@"text"] sizeWithFont:[UIFont systemFontOfSize:[UIFont smallSystemFontSize]]
                       constrainedToSize:CGSizeMake(width, MAXFLOAT)
                           lineBreakMode:NSLineBreakByWordWrapping];

//user
NSString *text;
if(![tweet[@"to_user"] isKindOfClass:[NSNull class]])
    text = [NSString stringWithFormat:@"%@ > %@", tweet[@"from_user"], tweet[@"to_user"]];
else
    text = tweet[@"from_user"];
CGSize s2 = [text sizeWithFont:[UIFont boldSystemFontOfSize:[UIFont labelFontSize]]
                      forWidth:width
                 lineBreakMode:NSLineBreakByWordWrapping];

return fmaxf(s1.height + s2.height + /*padding*/ 44, 60);
}
于 2012-11-19T10:47:28.930 に答える
0

以下の関数を使用して高さを計算できます

-(CGSize)SizeOfString:(NSString *)string withFont:(UIFont *)font constrainedToWidth:(CGFloat)width 
{
    CGSize size = [string sizeWithFont:font constrainedToSize:CGSizeMake(width, 4000) lineBreakMode:UILineBreakModeWordWrap];
    return CGSizeMake(width, size.height + 10);
}

電話

CGSize size = [self SizeOfString:your_text withFont:your_font constrainedToWidth:width_of_showing_area];
于 2012-11-19T10:39:49.077 に答える