рамка просмотра не меняется - PullRequest
0 голосов
/ 30 апреля 2019

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

- (void)configModel:(LKSportActivityEventModel *)model {
 //some code before
   CGFloat titleWidth = 100;
   [self.activityNameView mas_updateConstraints:^(MASConstraintMaker *make) {
        make.width.mas_equalTo(titleWidth);
    }];
 //some code after
}
- (void)layoutSubviews {
    [super layoutSubviews];
    [self setCorner:UIRectCornerBottomRight | UIRectCornerTopLeft
             bounds:self.activityNameView.bounds
         cornerSize:CGSizeMake(4, 4)
         targetView:self.activityNameView
              layer:self.activityNameViewShapLayer];
}

границы ActivityNameView не меняются

1 Ответ

0 голосов
/ 30 апреля 2019

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

layoutSubviews вычисляет только размер и позицию своих подпредставлений.Он не выкладывает целое поддерево представления.

После UITableViewCell.layoutSubviews верен только фрейм content view.

Самый простой способ исправить макет - вызвать contentView.layoutIfNeeded внутри layoutSubviews.

...