Обновление ограничений ячеек Subview

У меня есть пользовательская ячейка, и я пытаюсь обновить ограничения подпредставления, как показано ниже:

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));

}

Проблема Ограничения работают только после перезагрузки строк при прокрутке

2 ответа

Вместо 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;
}

Попробуйте обновить ограничения в методе, который используется для возврата ячейки к табличному виду при делегировании источника данных вместо метода layoutSubviews в ячейке.

И позвонить cell.contentView.layoutIfNeeded() перед обновлением ограничений, которые установят ячейку по умолчанию для ширины и высоты (320, 44, в зависимости от устройства), в случае, если вы можете получить ширину. После ячейки делегация вернулась к столу. Размер ячейки будет обновляться в соответствии с табличным представлением (структура делает это для вас), если вы установите некоторые ограничения, которые либо напрямую, либо относительно меняют размер.

Другие вопросы по тегам