在UITableView中,我想在每个原型单元格中绘制一个条形图,每个单元格中的大小不同,以指示值的数量
对于条形图,我使用了一个UILabel(尝试过UIview,结果相同),我想在cellForRowAtIndexPath方法中进行更改:
- (UITableViewCell *)tableView:(UITableView *)tableView cellForRowAtIndexPath:(NSIndexPath *)indexPath
{
int value = //Math to calculate value per cell
LessionViewCell *cell = [tableView dequeueReusableCellWithIdentifier:@"lessionItems"];
CGRect frmBlueLabel = cell.labelBlueBackground.frame;
frmBlueLabel.size.width = value;
cell.labelValue.text = [NSString stringWithFormat:@"%i", value]
cell.labelBlueBackground.frame = frmBlueLabel;
return cell;
}
当然,cell.labelBlueBackground.frame正确地连接在IB中。当我调试时,我可以看到cell.labelBlueBackground.frame在返回单元格时具有正确的值。
然而,在我的应用程序中,所有单元格的大小相等。
我在该单元格中设置了另一个标签labelValue,我设置了text属性 - 效果很好。
是否无法在cellForRowAtIndexPath中进行调整大小?我该如何解决这个问题?
非常感谢!
答案 0 :(得分:0)
我解决了这个问题。看起来在cellForRowAtIndexPath方法中无法更改帧。
经过一些研究,我能够通过以下代码解决这个问题:
-(void)viewWillLayoutSubviews{
[super viewWillLayoutSubviews];
[self updateAllBars];
}
-(void)viewWillAppear:(BOOL)animated{
[super viewWillAppear:animated];
[self updateAllBars];
}
虽然updateAllBars是我编写的一个函数,它遍历所有单元格并更改框架。 有趣的是,这必须在viewWillAppear和viewWillLayoutSubviews中执行