gpt4 book ai didi

iphone - UILabel 不会更改 setFrame 上的高度

转载 作者:可可西里 更新时间:2023-11-01 04:18:54 27 4
gpt4 key购买 nike

我正在尝试根据标签中的文本量更改 UILabel 的高度。

我可以计算标签所需的大小,但是当我尝试设置 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;
}

最佳答案

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

关于iphone - UILabel 不会更改 setFrame 上的高度,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/15130478/

27 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com