Xcode更改CellForRowatineXpath方法中原型单元内的UILabel大小

Xcode更改CellForRowatineXpath方法中原型单元内的UILabel大小,xcode,uitableview,uilabel,Xcode,Uitableview,Uilabel,在UITableView中,我想在每个原型单元中绘制一个条形图,每个单元中都有不同的大小,以指示值的大小 对于条形图,我使用了一个UILabel(也尝试了一个UIview,结果相同),我想在cellForRowAtIndexPath方法中更改它: - (UITableViewCell *)tableView:(UITableView *)tableView cellForRowAtIndexPath:(NSIndexPath *)indexPath { int value = //Math t

在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在返回单元格时具有正确的值

然而,在我的应用程序中,所有单元格的大小都是相同的

在我设置text属性的单元格中有另一个标签labelValue,这很好

是否无法在cellForRowAtIndexPath中调整大小?我如何解决这个问题


非常感谢

我解决了这个问题。在cellForRowAtIndexPath方法期间,似乎无法更改帧

经过一些研究,我能够通过以下代码解决这个问题:

-(void)viewWillLayoutSubviews{
    [super viewWillLayoutSubviews];
    [self updateAllBars];

}

-(void)viewWillAppear:(BOOL)animated{
    [super viewWillAppear:animated];
    [self updateAllBars];


}
updateAllBars是我编写的一个函数,它遍历所有单元格并更改帧。
有趣的是,这必须在ViewWillDisplay和viewWillLayoutSubviews中执行,这可能没问题,只需检查cell.labelBlueBackground是否为nil?否,则不是。如前所述,然后我po cell.labelBlueBackground,我可以看到框架具有正确的大小。当我在编译的应用程序中看到它时,它没有新的大小,只有我在IB中定义的大小。在我看来,在我用这个方法设置大小之后,iOS将从IB中获取旧的大小。