Вращение с автоматическим раскладом не работает

приведенный ниже метод не вызывается, когда я поворачиваю свое устройство с включенным автоопределением в IB.

willRotateToInterfaceOrientation:duration:

Во-первых, не работают ли вышеперечисленные методы с автоматическим раскладыванием? метод вызывается с выключенным Autolayout. Я пытаюсь изменить фоновое изображение моего взгляда на вращение. Не знаете, как этого добиться с помощью констант автоопределения ВКЛ?

Я также пытался использовать процедуру Моина, но у меня есть огромное представление иерархия и методы вызываются из супервизора и далее, и у меня есть много другого кода в других методах, таких как. Так что это не помогло

didRotateFromInterfaceOrientation  

person Irfanlone    schedule 11.07.2014    source источник
comment
Вы, должно быть, делаете что-то неправильно, потому что этот запущенный метод не должен иметь ничего общего с тем, включена или выключена автоматическая компоновка. Я всегда использую автоматический макет, и этот метод мне подходит.   -  person rdelmar    schedule 12.07.2014
comment
@rdelmar: спасибо. Таким образом, методы вызываются автоматически, когда я поворачиваю устройство. Только когда я меняю свой xib на autlayout, они не вызываются. Я протестировал это на всех файлах xib, и методы не вызывались. Так что же могло пойти не так? потому что он отлично работает без автопластинга. Что-то мне не хватает?   -  person Irfanlone    schedule 12.07.2014
comment
Извините, я понятия не имею. У меня это всегда срабатывало. Я просто попробовал это в новом приложении с контроллером, определенным xib, и он был вызван.   -  person rdelmar    schedule 12.07.2014
comment
Какой корневой контроллер? UITabBarController, UINavigationController или ни то, ни другое?   -  person SwiftArchitect    schedule 13.07.2014


Ответы (2)


Краткий ответ: -willRotateToInterfaceOrientation:duration: работает с AutoLayout.

Подробный ответ: при условии, что вы используете NIB, многие проблемы с компаундированием могут пойти не так; Я составил этот контрольный список:

  1. Вы установили свой собственный UIViewController в IB в соответствии с рекомендациями @JoshJustice в Кончик загружен, но выход для просмотра не установлен - новое в InterfaceBuilder
  2. Правильно ли вы обрабатываете автоповорот в соответствии с рекомендациями @nybon в UIViewController не автоматически вращается
  3. Вы установили глобальную ориентацию в plist в соответствии с рекомендациями @NateFlink на странице Обработка автоповорот для одного контроллера просмотра в iOS7
  4. Ваш пользовательский UIViewController отвечает на -supportedInterfaceOrientations неверными значениями? См. Рекомендуемый ответ @AndrewHershberger на странице предпочтительныйInterfaceOrientationForPresentation должен возвращать поддерживаемую ориентацию интерфейса (iOS 6)
person SwiftArchitect    schedule 12.07.2014
comment
Спасибо за Ваш ответ. Не могли бы вы подробнее рассказать о том, что вы имели в виду. Вы установили свой пользовательский UIViewController в IB и правильно ли обрабатываете автоповорот? как я уже сказал в своем вопросе, автоповорот отлично работает без автопластинга. - person Irfanlone; 12.07.2014
comment
Нет однозначного ответа на вопрос, почему что-то пошло не так в вашем приложении (пока вы не обнаружите, что это такое), но есть ответ на ваш вопрос: Во-первых, работают ли вышеупомянутые методы с автоматическим размещением? да, это так Я отформатировал свой ответ и добавил ссылки на те места, которые, вероятно, вам следует поискать. - person SwiftArchitect; 12.07.2014

-willRotateToInterfaceOrientation:duration: вызывается в корневом контроллере просмотра и всех его дочерних контроллерах просмотра и работает с автоматическим размещением. Если вы хотите, чтобы эти методы вызывались на определенном контроллере представления, он должен быть дочерним контроллером представления корневого контроллера представления.

Мне потребовалось время, чтобы понять, что иерархия от корня до последнего контроллера представления в какой-то момент нарушалась. Мне просто нужно было добавить его обратно в качестве контроллера дочернего представления.

person Irfanlone    schedule 20.07.2014