UITableViewCell addSubview和CGRectMake问题

时间:2012-01-31 15:20:51

标签: iphone ipad uitableview

我正在尝试在UITableViewCell中显示自定义UILabel,但有些不对劲。 我的代码:

- (UITableViewCell *)tableView:(UITableView *)tableView cellForRowAtIndexPath:(NSIndexPath *)indexPath
{
    NSDictionary *currentComment = [comments objectAtIndex:indexPath.row];

    static NSString *CellIdentifier = @"TitleCell";

    UITableViewCell *cell = [tableView dequeueReusableCellWithIdentifier:CellIdentifier];
    if (cell == nil) {
        cell = [[[UITableViewCell alloc] initWithStyle:UITableViewCellStyleDefault reuseIdentifier:CellIdentifier] autorelease];
    }
    int commentLevel = [[currentComment objectForKey:@"level"] intValue];
    NSLog(@"Comment level: %i", commentLevel);
    NSString *commentText = [currentComment objectForKey:@"text"];
    UILabel *titleLabel = [[UILabel alloc] init];
    titleLabel.numberOfLines = 0;
    [titleLabel setFont:[UIFont fontWithName:@"Verdana" size:17.0]];
    CGSize textSize;
    if (commentLevel == 0) {
        textSize = [commentText sizeWithFont:titleLabel.font constrainedToSize:CGSizeMake(310, FLT_MAX) lineBreakMode:UILineBreakModeWordWrap];
         //titleLabel.bounds = CGRectMake(5, 5, textSize.width, textSize.height);
    } else {
        textSize = [commentText sizeWithFont:titleLabel.font constrainedToSize:CGSizeMake((295-10*commentLevel), FLT_MAX) lineBreakMode:UILineBreakModeWordWrap];
        //titleLabel.bounds = CGRectMake(15, 5, textSize.width, textSize.height);
    }
    titleLabel.bounds = CGRectMake(20, 20, 300, 100);
    titleLabel.text = commentText;
    [cell.contentView addSubview:titleLabel];

    return cell;
}

结果截图:enter image description here

2 个答案:

答案 0 :(得分:2)

您应该设置titleLabel.frame而不是titleLabel.bounds。界限与位置无关。

答案 1 :(得分:2)

您确定要获取评论值,因为通过查看屏幕截图,看起来好像您将垃圾设置为标签的文本。

此外,您必须设置标签的框架而不是其边界,因为您希望它的位置与UITableViewCell相关。

更改代码 titleLabel.bounds = CGRectMake(20,20,300,100); 至 titleLabel.frame = CGRectMake(20,20,300,100);