UITableViewCell addSubview и CGRectMake проблемы - PullRequest
1 голос
/ 31 января 2012

Я пытаюсь показать пользовательский UILabel в UITableViewCell, но что-то не так.Мой код:

- (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 ]

2 голосов
/ 31 января 2012

Вы уверены, что получаете значения комментариев, потому что, глядя на снимок экрана, вы видите, как будто вы устанавливаете мусор для текста метки.

Также вы должны установить рамку метки вместо ее границ, потому что вы хотите, чтобы ее местоположение относилось к UITableViewCell.

изменить код titleLabel.bounds = CGRectMake (20, 20, 300, 100); в titleLabel.frame = CGRectMake (20, 20, 300, 100);

2 голосов
/ 31 января 2012

Вы должны установить titleLabel.frame, а не titleLabel.bounds.Границы не имеют ничего общего с позицией.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...