Перерисовка / setNeedsLayout подпункта UIScrollView не работает - PullRequest
0 голосов
/ 12 марта 2019

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

Это LineViewпомещается как подпредставление в пределах UIScrollView с использованием фиксированных ограничений для его высоты и ширины и верхних + ведущих ограничений для его положения.

Когда прокручивается UIScrollView, ограничения ширины обновляются для изменения размеравид линии:

- (void)scrollViewDidScroll:(UIScrollView *)scrollView {
    ...
    self.lineViewWidthConstraint.constant = someFactorRelatedToTheCurrentScrollPosition;
    [self.lineView setNeedsLayout];
}

Проблема: Изменение ширины НЕ вызывает метод drawRect: LineView.Таким образом, линия не перерисовывается, а просто сжимается или растягивается.Даже использование setNeedsLayout вручную не вызывает повторное рисование.

Есть идеи, почему метод рисования не вызывается и как это исправить?

1 Ответ

0 голосов
/ 12 марта 2019

Попробуйте с layoutIfNeeded вместо setNeedsLayout.Поскольку первый - это синхронный (принудительный) вызов, а второй - асинхронный вызов.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...