我在情节提要中有一个带有自定义单元格的表格视图
小区标识符是:MyCustomCellIdentifier
标签的框架是:{ { 15.0f, 178.0f }, { 280.0f, 40.0f } }
我基本上想根据文本的大小更改 UILabel 的框架。
假设我的 UILabel 被标记为:1
在我的 StoryBoard 中
在函数中:
- (UITableViewCell *)tableView:(UITableView *)tableView cellForRowAtIndexPath:(NSIndexPath *)indexPath
{
UITableViewCell *cell = [tableView dequeueReusableCellWithIdentifier:@"MyCustomCellIdentifier"];
UILabel *myLabel = [(UILabel *)[cell viewWithTag:1];
NSLog(@"frame %@", NSStringFromCGRect(myLabel.frame)); //frame {{0, 295}, {0, 0}}
myLabel.text = @"myText";
CGSize maximumLabelSize = CGSizeMake(FLT_MAX, myLabel.frame.size.height);
CGSize expectedLabelSize = [myLabel.text sizeWithFont:myLabel.font constrainedToSize:maximumLabelSize lineBreakMode:NSLineBreakByTruncatingTail];
CGRect newFrame = myLabel.frame;
newFrame.size.width = expectedLabelSize.width;
myLabel.frame = newFrame;
NSLog(@"frame %@", NSStringFromCGRect(myLabel.frame)); //frame {{0, 295}, {80, 0}}
return cell;
}
为什么有那些 0 值而不是情节提要中的实际值?如何初始化标签的框架以获得正确的值?
为什么如果我以编程方式设置值不会更改显示的标签框?
当我向下滚动并滚动回上一个单元格时,它实际上显示了正确的帧,但在第一次显示期间却没有。