Fla sh индикаторы прокрутки в layoutSubviews () - PullRequest
0 голосов
/ 24 марта 2020

У меня есть подкласс UIView, который также содержит UIScrollView. Я хочу, чтобы этот scrollview отображал fla sh scrollIndicators, когда scrollView можно прокручивать. Это зависит от набора признаков (компактные признаки имеют меньше места, поэтому scrollView становится прокручиваемым).

Чтобы добиться этого, я сделал следующее

class TestView: UIView {
    override func layoutSubviews() {
        super.layoutSubviews()

        // This means the scrollView is scrollable.    
        if scrollView.contentSize.height > scrollView.bounds.height {
            scrollView.flashScrollIndicators()
        }
    }
}

Проблема в том, что layoutSubviews() называется несколько раз. В первый раз может случиться так, что contentSize не обновится, что приведет к запуску анимации fla sh, так как она прошла условие. Во второй раз, когда вызывается layoutSubviews, он, наконец, имеет обновленный contentSize, не соответствует условию и не будет показывать sh индикаторов. Проблема в том, что при первом вызове он уже вызывал анимацию, и теперь он виден пользователю.

Я уже пытался вызвать invalidateIntrinsicContentSize() для себя, а также для scrollView. Я также пытался вызвать scrollView.setNeedsLayout() и scrollView.layoutIfNeeded(), прежде чем выполнить это условие, но безуспешно.

Должен ли я выполнить эту проверку в другом месте? Я уже пробовал это в viewDidlayoutSubviews методе UIViewController, содержащем это TestView. Или есть какой-то другой API, который мне нужно вызвать перед выполнением проверки?

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