在TableCell中更改UIView的大小

时间:2015-12-10 02:14:01

标签: objective-c uiview tablecell

我有一个tableCell。在单元格中,我有一个背景颜色的UIVIew。

我想根据数据更改UIView的宽度。

cellForRowAtIndexPath中,我添加了以下行来更改视图的宽度。

//set the frame of the bar
CGRect  rect = cell.barView.frame;
rect.size.width = myViewWidth;
cell.barView.frame = rect;

这对设置名为barView的UIVIew的宽度没有任何影响。

barView在单元格中设置了以下约束。

  1. 领先空间到SuperView = 0
  2. 底部空间到SuperView = 0
  3. 身高= 18
  4. 宽度> = 0
  5. 如何让barview调整大小?

    P.S。我在cellForROwAtIndexPath

    中执行代码时验证myViewWidth大于0

1 个答案:

答案 0 :(得分:0)

为视图宽度创建约束并链接到单元格内的IBOutlet。

@interface historicoTableViewCell : UITableViewCell
@property (weak, nonatomic) IBOutlet NSLayoutConstraint *lauguraFaixa;

enter image description here

在cellForRowAtIndexPath中根据需要更改此约束。

- (UITableViewCell *)tableView:(UITableView *)tableView cellForRowAtIndexPath:(NSIndexPath *)indexPath {
    historicoTableViewCell *cell = [tableView dequeueReusableCellWithIdentifier:@"cell" forIndexPath:indexPath];

    if (cell == nil) {
        cell = [[historicoTableViewCell alloc] initWithStyle:UITableViewCellStyleDefault reuseIdentifier:@"cell"];
    }

    int duracao = [self duracao:[[self.periodos objectAtIndex:indexPath.row] inicio] data:[[self.periodos objectAtIndex:indexPath.row] fim]];

    int diasMaximos = 9;
    int larguraMinima = 100;
    int larguraMaxima = 300;
    int largura = larguraMinima+((larguraMaxima-larguraMinima)/diasMaximos * duracao);

    cell.lauguraFaixa.constant = largura;


    return cell;
}