Почему viewWillTransition (to size: ...) не работает, если я ухожу от View Control и обратно? - PullRequest
0 голосов
/ 28 августа 2018

У меня есть подкласс UIView, называемый myView, который должен переконфигурировать себя при изменении ориентации устройства. Я использую метод viewWillTransition(to size: CGSize, with coordinator: UIViewControllerTransitionCoordinator) в UIViewController для вызова метода setUp(), который перенастраивает представление. Проблема, с которой я сталкиваюсь, заключается в том, что он работает при первой загрузке этого конкретного контроллера представления, но если я ухожу, то обратно к нему код больше не работает. В чем дело? Код выглядит следующим образом:

@IBOutlet weak var myView: UIView!
override func viewWillTransition(to size: CGSize, with coordinator: UIViewControllerTransitionCoordinator) {
    self.myView.setUp()
}

Если вместо этого я использую устаревший метод didRotate(from fromInterfaceOrientation: UIInterfaceOrientation), код работает правильно каждый раз.

Ответы [ 2 ]

0 голосов
/ 28 августа 2018

Итак, я до сих пор не понял, почему происходит первоначальная проблема, но я нашел обходной путь. Обычно было бы просто рассчитать ориентацию на основе UIScreen.main.bounds в методе viewDidLayoutSubviews(), но у меня есть таймер, который срабатывает с частотой обновления экрана, так что метод вызывается 60 раз в секунду, а мой * Метод 1003 * слишком трудоемкий, чтобы это работало. Итак, я передал свое UIViewController и orientation свойство с помощью наблюдателя-установщика, причем это свойство рассчитывается и устанавливается в пределах viewDidLayoutSubviews(). Затем наблюдатель-установщик вызывает метод setUp(), если ориентация меняется. Мне все еще любопытно, почему другой метод не работает, но обходной путь подойдет.

0 голосов
/ 28 августа 2018

Так как self.myView.setUp() вызывается каждый раз, когда я подозреваю, что представление не обновляется из-за неверной ссылки.

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

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