2015-01-01 7 views
0

Я создал простое приложение с одним представлением, которое предназначено для изменения размера/изменения его компоновки при повороте устройства в новую ориентацию. Я использую классы размера и AutoLayout.SizeClasses + AutoLayout работает безупречно в симуляторе, но не на устройстве?

Макет правильно изменяется в симуляторе xcode (ios8 на всех тестируемых устройствах), но когда я пытаюсь запустить его на своем телефоне, представление отображается правильно в портрете, но не поворачивается в альбомное.

Строка состояния (время, сигнальная батарея) вращается с экрана, но вид не перемещается вообще. Что может быть причиной этого? Устройство представляет собой iphone 5, ios 8.1

Я рад опубликовать любой код, который вы хотите просмотреть, пожалуйста, дайте мне знать, что актуально.

Спасибо!

Редактирование: Хорошо, поэтому я только что обновил xcode до 6.1 с 6.01, и проблема теперь существует в simlator и устройстве, поэтому это должно быть то, что я неправильно настроил в коде.

Вот как приложение выглядит в интерфейс строитель предпросмотре storyboard preview.

Вот приложение в портретном. portrait

И пейзаж. landscape

Как вы можете видеть, панель состояния вращается, но основной вид приложения не работает. Моим основным видом является представление ребенка в виде баннера для отображения iad, как показано на рисунке here в демонстрации баннера контейнера.

+0

HI вы можете добавить скриншоты из симулятора и устройства. Если возможно, также как вы установили ограничения. –

+0

@iOS_DK спасибо за ответ, я добавил несколько снимков экрана, чтобы показать проблему. Я думаю, что я не должен правильно обрабатывать ротацию, потому что мой основной вид - дочерний vc делегата рекламного баннера. При необходимости я могу отправить код обработки инициализации и вращения. – TPB

ответ

0

ОК, так что я понял это благодаря этому ответу: iOS 8.1 auto rotation

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

self.window = [[UIWindow alloc] initWithFrame:[[UIScreen mainScreen] bounds]]; 

из приложения delegate applicationDidFinishLaunching метод исправляет проблему ... странно.

+0

Обычно вам не нужно создавать окно, если у вас нет конкретной необходимости. Если вы не знаете, что у вас есть эта потребность, у вас нет этой необходимости. Кажется, что это сообщение содержит обзор на высоком уровне некоторых ошибок и/или целей создания дополнительного UIWindow. http://shaune.com.au/using-multiple-uiwindows-in-ios-applications/ –

+0

@BradBrighton благодарит, что это хорошо знать. Я на самом деле просто следовал за руководством по яблокам [здесь] (https://developer.apple.com/library/ios/samplecode/iAdSuite/Listings/ContainerBanner_ContainerBanner_BannerViewController_m.html#//apple_ref/doc/uid/DTS40010198-ContainerBanner_ContainerBanner_BannerViewController_m-DontLinkElementID_11) Я думал, что это должно сработать, потому что я сделал это точно так же, как это сделал яблоко в этом примере проекта, но я думаю, что этот способ больше не совместим с последними обновлениями iOS. – TPB

+0

Оказывается, я делаю слишком много вещей сразу и даю плохие советы. «Если вы заканчиваете работу с несколькими окнами», все правильно, но по мере того как я изучал ваш комментарий, я понимаю, что у меня есть тот же код создания окна в моем собственном - это шаблонный код, и я видел его так часто, что он невидим мне.У вас случайно появилось два файла UIWindow в файле didFinishLaunching? (Я уклоняюсь от этого, но не хочу, чтобы я выглядел более глупо ...) –

Смежные вопросы