UILabel不会更改setFrame的高度

Mat*_*ley 5 iphone cocoa-touch objective-c ios

我正在尝试UILabel根据标签中的文本数量来更改a的高度.

我可以计算标签所需的尺寸,但是当我尝试设置UILabel框架时它就不会改变.

以下是我的代码.即使我将最后一行中的size.height替换为类似于500的大小,UILabel帧的大小也不会改变

 - (UITableViewCell *)tableView:(UITableView *)tableView cellForRowAtIndexPath:(NSIndexPath *)indexPath
    {
    static NSString *simpleTableIdentifier = @"GameItemCell";
    GameItemCell *cell = (GameItemCell *)[tableView dequeueReusableCellWithIdentifier:simpleTableIdentifier];

    NSArray *nib = [[NSBundle mainBundle] loadNibNamed:@"GameItemCell" owner:self options:nil];
    cell = [nib objectAtIndex:0];

    GameItem* item = [_hunt.gameItems objectAtIndex: indexPath.row];


    cell.itemHeaderLabel.text = [NSString stringWithFormat:@"#%d - (%d pts)", indexPath.row+1, item.itemPoints];

    UILabel* textLabel = cell.itemTextLabel;

    textLabel.text = item.itemText;
    textLabel.lineBreakMode = NSLineBreakByWordWrapping;


    CGRect frame = cell.itemTextLabel.frame;
    CGSize textSize = { frame.size.width, 20000.0f };
    CGSize sizeOneLine = [@"one line" sizeWithFont:cell.itemTextLabel.font constrainedToSize:textSize lineBreakMode:NSLineBreakByWordWrapping];
    CGSize cellTextSize = [item.itemText sizeWithFont:cell.itemTextLabel.font constrainedToSize:textSize lineBreakMode:NSLineBreakByWordWrapping];
    CGSize sizeOneLineSpacing = CGSizeMake(sizeOneLine.width, sizeOneLine.height + 3);
    NSInteger lines = cellTextSize.height / sizeOneLine.height;
    CGSize size = CGSizeMake(frame.size.width, lines * sizeOneLineSpacing.height);

    textLabel.frame = CGRectMake(frame.origin.x, frame.origin.y, size.width, size.height);



    return cell;
}
Run Code Online (Sandbox Code Playgroud)

小智 7

您必须在GameItemCell里面设置标签的框架 -(void)layoutSubviews