【问题标题】:Update Constraints of Cell Subview更新单元格子视图的约束
【发布时间】:2015-07-06 06:43:39
【问题描述】:

我有一个自定义单元格,我正在尝试更新子视图的约束,如下所示:

CustomeCell.m

-(void)layoutSubviews
{
    [super layoutSubviews];

    _con_view_width.constant = _lbl_property.frame.size.width;
    if(!_btn_imageCount.isHidden)
    _con_view_width.constant = _lbl_property.frame.size.width + _btn_imageCount.frame.size.width;

    NSLog(@"%@",NSStringFromCGRect(_view_lbl_btn.frame));

    [_view_lbl_btn updateConstraintsIfNeeded];
    NSLog(@"%@",NSStringFromCGRect(_view_lbl_btn.frame));

}

问题 约束仅在滚动时重新加载行后才起作用

【问题讨论】:

标签: ios objective-c iphone uitableview autolayout


【解决方案1】:

而不是 updateConstraintsIfNeeded 尝试 layoutIfNeeded。我认为它会起作用,你的代码应该是这样的。

-(void)layoutSubviews
{
    [super layoutSubviews];

    _con_view_width.constant = _lbl_property.frame.size.width;
    if(!_btn_imageCount.isHidden)
    _con_view_width.constant = _lbl_property.frame.size.width + _btn_imageCount.frame.size.width;

    NSLog(@"%@",NSStringFromCGRect(_view_lbl_btn.frame));

    [_view_lbl_btn layoutIfNeeded];
    NSLog(@"%@",NSStringFromCGRect(_view_lbl_btn.frame));

}

编辑:如果您在自定义单元格类中执行此操作,那么您需要在单元格中再添加一行以在索引路径处添加一行。

- (UITableViewCell *)tableView:(UITableView *)tableView cellForRowAtIndexPath:(NSIndexPath *)indexPath
{
    UITableViewCell *cell = [tableView dequeueReusableCellWithIdentifier:@"Cell" forIndexPath:indexPath];
    //[cell layoutIfNeeded];
    [cell layoutSubviews];
    return cell;
}

【讨论】:

  • 您是在表格视图单元格的自定义类中执行此操作吗?
  • 然后在单元格内索引路径处的行..就像这样初始化单元格后写入。 [单元格布局IfNeeded];
  • 我现在会得到正确的框架,但屏幕上的 UI 没有更新。
  • 然后尝试 [cell layoutSubViews];。我也遇到过这种问题。这两个选项之一必须有效。
  • @MaheshAgrawal 你有没有找到解决这个问题的方法?我遇到了同样的问题。
【解决方案2】:

尝试更新数据源委托中用于将单元格返回到 tableview 的方法中的约束,而不是单元格中的方法 layoutSubviews。

并在更新约束之前调用cell.contentView.layoutIfNeeded(),这会将单元格设置为默认宽度和高度(320、44 基于设备),以防您可以获得宽度。委托将单元格返回到 tableview 之后。如果您设置了一些直接或相对改变大小的约束,则单元格大小将由 tableview 更新(框架会为您更新)。

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2020-12-23
    • 2023-04-11
    • 1970-01-01
    相关资源
    最近更新 更多