0

高さを動的に変更しようとしていますが、どういうわけか機能しません。「detailText」ラベルは、リストの他のフィールドと重なっています。セル全体のデフォルトの高さは150で、これにはuser、text、dateが含まれます。ユーザーと日付はそれぞれ1行をカバーし、残りはテキストでカバーします。私はアプリを完成させようとしていますが、これはプロセス全体を本当に混乱させています。他のテクニックもチェックしましたが、どういうわけかそれらのどれも機能していません。私が見逃しているのは小さなことかもしれません。:(

    - (CGFloat)tableView:(UITableView *)tableView heightForRowAtIndexPath:(NSIndexPath *)indexPath{

    NSString *user=[[discussionArray objectAtIndex:indexPath.row] objectForKey:@"user"];
    NSString *text=[[discussionArray objectAtIndex:indexPath.row] objectForKey:@"text"];
    NSString *time=[[discussionArray objectAtIndex:indexPath.row] objectForKey:@"date"];
    CGSize usersize = [user sizeWithFont:[UIFont systemFontOfSize:15] constrainedToSize:CGSizeMake(250, MAXFLOAT) lineBreakMode:UILineBreakModeWordWrap];
    CGSize textsize = [text sizeWithFont:[UIFont systemFontOfSize:13] constrainedToSize:CGSizeMake(250, MAXFLOAT) lineBreakMode:UILineBreakModeWordWrap];
    CGSize timesize = [time sizeWithFont:[UIFont systemFontOfSize:12] constrainedToSize:CGSizeMake(250, MAXFLOAT) lineBreakMode:UILineBreakModeWordWrap];

    return usersize.height+textsize.height+timesize.height;
}

とコネクタ

        - (UITableViewCell *)tableView:(UITableView *)tableView cellForRowAtIndexPath:(NSIndexPath *)indexPath{
    static NSString *CellIdentifier = @"Cell";
    discussionCustomCell *cell = (discussionCustomCell*)[tableView dequeueReusableCellWithIdentifier:CellIdentifier];
    if (cell == nil) {
        NSArray *nib = [[NSBundle mainBundle] loadNibNamed:@"discussionCustomCell" owner:self options:nil];
        cell = [nib objectAtIndex:0];
    }

    NSLog(@"%i",[discussionArray count]);
    NSDictionary *dict=[discussionArray objectAtIndex:indexPath.row];
    cell.imageViewIst.image = [profileImagesArray_ objectAtIndex:indexPath.row];
    NSString *new=[dict objectForKey:@"new"];
    if ([new isEqualToString:@"0"])
    {
    cell.imageViewSecond.backgroundColor=[UIColor redColor];
    }
    else
    {
    cell.imageViewSecond.backgroundColor=[UIColor greenColor];
    }
    cell.nameLabel.text=[dict objectForKey:@"user"];
    cell.nameLabel.font = [UIFont boldSystemFontOfSize:15];
    cell.nameLabel.numberOfLines = ceilf([[dict objectForKey:@"user"] sizeWithFont:[UIFont systemFontOfSize:15] constrainedToSize:CGSizeMake(250, MAXFLOAT) lineBreakMode:UILineBreakModeWordWrap].height/20.0);
    cell.detailText.text=[dict objectForKey:@"text"];
    cell.detailText.font = [UIFont boldSystemFontOfSize:15];
    cell.detailText.numberOfLines = ceilf([[dict objectForKey:@"text"] sizeWithFont:[UIFont systemFontOfSize:13] constrainedToSize:CGSizeMake(250, MAXFLOAT) lineBreakMode:UILineBreakModeWordWrap].height/20.0);
    cell.timeLabel.text=[dict objectForKey:@"date"];
    cell.timeLabel.font = [UIFont boldSystemFontOfSize:15];
    cell.timeLabel.numberOfLines = ceilf([[dict objectForKey:@"date"] sizeWithFont:[UIFont systemFontOfSize:12] constrainedToSize:CGSizeMake(250, MAXFLOAT) lineBreakMode:UILineBreakModeWordWrap].height/20.0);
    return cell;
}
4

1 に答える 1

0

デモステネスが提案したように、ラベルに正しいオフセットが指定されていることを確認してくださいdiscussionCustomCell。また、セルの高さを返す場合は、ラベルの高さと各ラベル間のオフセットの差を合計するだけであることに注意してください。そうしないと、ラベルがセルの外側に表示される可能性があります。すなわち。ユーザーラベルの高さが40で、タイムラベルの高さが40の場合、セルの合計の高さは80以上になります。あなたがポイントを得たことを願っています。

于 2013-01-09T07:04:15.183 に答える