#ios #objective-c #uitableview #ios-autolayout
#iOS #objective-c #uitableview #ios-автозапуск
Вопрос:
У меня есть подкласс UITableViewCell
и использование Masonry для настройки ограничений зависит от моего стиля ячейки (enum). Например, у меня есть правильная оболочка с несколькими кнопками, и иногда я хочу использовать исключенный путь для моего UITextView
, когда ширина моей оболочки не равна нулю. Все работает хорошо только после прокрутки вниз до этой ячейки и повторной прокрутки вверх и вниз. С первой попытки у меня
И после прокрутки вверх и вниз у меня есть
- (void)setCellType:(ReservationCellType)cellType
{
self->_cellType = cellType;
CGFloat rightButtonsWrapperWidth = 0;
CGFloat rightButtonsWrapperHeight = 0;
if (cellType == ReservationCellTypeSeating) {
if (self.reservationStatus == ReservationStatusArrived) {
rightButtonsWrapperWidth = 100.f;
rightButtonsWrapperHeight = 100.f;
} else {
rightButtonsWrapperWidth = 0;
rightButtonsWrapperHeight = 0;
}
}
[self.rightButtonsWrapper mas_remakeConstraints:^(MASConstraintMaker *make) {
make.width.mas_equalTo(rightButtonsWrapperWidth);
make.height.mas_equalTo(rightButtonsWrapperHeight);
}];
if (cellType == ReservationCellTypeSeating) {
if (self.reservationStatus == ReservationStatusArrived) {
[self addRightButtonsWrapperExcludedPathWidth:rightButtonsWrapperWidth height:rightButtonsWrapperHeight];
}
}
}
Код addRightButtonsWrapperExcludedPathWidth:height:
- (void)addRightButtonsWrapperExcludedPathWidth:(CGFloat)width height:(CGFloat)height
{
CGRect frame = CGRectMake(CGRectGetMinX(self.rightButtonsWrapper.frame), CGRectGetMinY(self.rightButtonsWrapper.frame), width, height);
CGRect rightWrapperExclusionRect = [self.noteTextView convertRect:frame fromView:self.wrapper];
UIBezierPath *rightWrapperExcludedPath = [UIBezierPath bezierPathWithRect:rightWrapperExclusionRect];
self.noteTextView.textContainer.exclusionPaths = @[rightWrapperExcludedPath];
[self.wrapper layoutIfNeeded];
}
cellForRowAtIndexPath:
Я звоню [cell layoutIfNeeded]
; Помогите мне, пожалуйста. И второй вопрос — мои вычисления всегда ошибочны, прежде чем я вызываю reloadData. И после некоторой прокрутки у меня возникло много проблем с компоновкой. Пожалуйста, помогите мне.
Комментарии:
1. Попробуйте настроить свои ограничения в
- (void)layoutSubviews
методе вашей пользовательской ячейки, я надеюсь, это поможет2. @ReinierMelian это не помогает 🙁