2013-07-02 6 views
1

У меня есть общий вопрос для iOS 6 и AutoLayout в симуляторе. Мое приложение предназначено для iOS 5 и iOS 6. Мне нужно отключить AutoLayout в StoryBoard, иначе приложение сработает в симуляторе iOS 5 (поскольку AutoLayout поддерживается сначала с iOS6). Но когда я запускаю симулятор iOS 6, все виды вращаются, и все подзоны изменяются соответственно. Используя iOS 5 simulator, все виды не вращаются при изменении ориентации устройства.Почему авторотация происходит в iOS 6, но не iOS 5?

Будет ли это происходить и на реальных устройствах? Таким образом, даже при отключенной опции AutoLayout в Storyboard все виды будут вращаться с ориентацией устройства с iOS 6 и лучше на реальном устройстве?

Спасибо!

+1

Это вопрос авторотации, а не вопрос AutoLayout. Вы знаете, что iOS 6 представила другую систему авторотации, а затем iOS 5? – Daniel

+0

@ Даниэль, ты на самом деле единственный, отвечающий на мой вопрос. Вы должны отправить ответ, который я могу принять. Является ли autorotation поведение по умолчанию для iOS 6? И почему правильные размеры изображений в симуляторе iOS 6 с AutoLayout не активированы? Благодарю. – JFS

+0

Похоже, кто-то избил меня. :( – Daniel

ответ

3

Apple, изменился, как авторотация работает прошивка 6.

При создании проекта в Xcode 4.6, Xcode устанавливает его использовать авторотации IOS 6 API. Шаблон проекта позволяет создавать портретные, ландшафтно-левые и ландшафтно-правые ориентации (и перевернутый портрет в приложении для iPad). Поэтому, когда вы запускаете приложение на iOS 6 (устройство или симулятор), приложение позволяет вращать интерфейс.

При запуске этого проекта на iOS 5 (либо на симуляторе, либо на устройстве) система игнорирует API авторотации iOS 6 и ищет метод shouldAutorotateToInterfaceOrientation: на вашем контроллере. Поскольку Xcode 4.6 не создавал этот метод (и, предположительно, вы его не добавляли), система использует реализацию по умолчанию, которая возвращает только YES для портретной ориентации. Таким образом, на iOS 5 вы не получаете никакого вращения интерфейса.

Простым решением, если вы не хотите вращения интерфейса, является переход к сводке вашей цели и выключение ландшафтных ориентаций.

target summary with landscape buttons called out

Вы можете узнать больше из нескольких официальных источников:

+0

Привет, Роб. Отличный ответ, как всегда от вас. Большое спасибо! Вы мне очень помогли. Где я могу получить такую ​​общую информацию, когда Apple вводит такие изменения? – JFS

+0

Прочтите примечания к выпуску. Смотрите видео WWDC. По крайней мере, смотрите видеоролики «Что нового в XXX». –

0

Если вы хотите поддерживать iOS 5, вам не следует использовать автоматическую компоновку. Автоматическая компоновка поддерживается только в iOS 6 и более поздних версиях.

Вы можете технически иметь две раскадровки и загружать одну для iOS 5 и одну для iOS 6, но вы будете дублировать много работы. Лучше всего сдерживать автоматическую компоновку, пока вы не сможете удалить поддержку iOS 5.

2

Как @Patrick Tescher сказал, вы не можете использовать Auto Layout в прошивке 5.

Вы должны также учитывать тот факт, что только 6% пользователей имеют IOS 5, по состоянию на июня '13. В то же время принятие iOS 6 составляет 93% (source). Это очень большое число. Таким образом, в зависимости от вашей ситуации, возможно, вам не нужно делать ваше приложение iOS 5 совместимым в первую очередь. Тратить в два раза больше времени разработки на функцию, чтобы заставить ее работать на 6% пользователей, возможно, не лучшее время. Если это не деловое решение, и вам платят в любом случае :)

+0

Это не 100 % true. У меня iPhone 4S, который все еще работает под управлением iOS 5.0 (правда, вы слышали правильно), и почти все 300 приложений, которые я установил из AppStore, запускаются на моем устройстве. Это означает, что разработчики все еще поддерживают iOS 5.0 или ниже. Это почти все мои приложения совместимы как с iOS 5.0, так и с iOS 6.0, и я замечаю более высокую отдачу от приложений, поддерживающих как 5.0, так и выше –

+0

BlackRider, спасибо за сообщение. Я знаю, что AutoLayout не может использоваться в iOS 5. Знаете ли вы, почему представления по-прежнему правильно изменяются в симуляторе iOS 6 с отключенным AutolAyout? – JFS

+0

Это может быть потому, что их 'autoresizingMask' настроен правильно. Ваши представления могут по-прежнему изменять размер без AutoLayout, но затем t всегда меняйте размер по отношению к родителям. Принимая во внимание, что с помощью AutoLayout они также могут изменяться по сравнению с их точками просмотра. – Macondo2Seattle

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