Обратите внимание, что этот вопрос с 2008 года и сейчас представляет только исторический интерес.
Как лучше всего создать приложение для iPhone, которое с самого начала запускалось бы в ландшафтном режиме, независимо от положения устройства?
Как программно, так и с помощью Interface Builder.
ios
objective-c
landscape
Мишель де Маре
источник
источник
Ответы:
Только исторический ответ. Эффектно устарел.
Обратите внимание, что этот ответ сейчас сильно устарел /
Этот ответ - лишь историческое любопытство .
Волнующие новости! Как обнаружил Эндрю ниже, эта проблема была исправлена Apple в версии 4.0+.
Похоже, больше нет необходимости увеличивать размер представления для каждого вида, и конкретная серьезная проблема ландшафта, «работающего только в первый раз», была решена.
По состоянию на апрель 2011 года невозможно протестировать или даже построить что-либо ниже 4.0, поэтому вопрос является чисто историческим курьезом. Невероятно, сколько хлопот это доставляло разработчикам так долго!
Вот исходное обсуждение и решение. Сейчас это совершенно неактуально, поскольку эти системы даже не работают.
ЧРЕЗВЫЧАЙНО СЛОЖНО заставить эту работу работать полностью - есть как минимум три проблемы / ошибки.
попробуйте это .. конструктор интерфейсов ландшафтный дизайн
В частности, обратите внимание, что там, где говорится «и вам нужно правильно использовать shouldAutorotateToInterfaceOrientation везде», это означает везде, во всех ваших полноэкранных представлениях.
Надеюсь, это поможет в этом кошмаре!
Важное напоминание о ДОПОЛНИТЕЛЬНОЙ хорошо известной проблеме: если вы пытаетесь переключиться между БОЛЕЕ ОДНИМ видом (все альбомные), ЭТО ПРОСТО НЕ РАБОТАЕТ . Об этом важно помнить, иначе вы потратите дни на решение проблемы. Это буквально НЕ ВОЗМОЖНО. Это самая большая открытая и известная ошибка на платформе iOS. Буквально невозможно заставить аппаратное обеспечение делать второй вид, который вы загружаете, альбомным. Раздражающий, но простой обходной путь, и то, что вы должны сделать, - это иметь тривиальный главный UIViewController, который ничего не делает, кроме как сидит и позволяет вам переключаться между вашими представлениями.
Другими словами, в iOS из-за серьезной ошибки знания:
Вы можете сделать это только один раз . Позже, если вы попытаетесь удалить happyThing.view и вместо этого вставить newThing.view, ЭТО НЕ РАБОТАЕТ - И ЭТО ТАКОЕ. Аппарат никогда не повернет вид на альбомный. Здесь нет никаких уловок, даже Apple не может заставить это работать. Обходной путь, который вы должны принять, - это иметь общий UIViewController, который просто сидит там и просто хранит ваши различные представления (happyThing, newThing и т. Д.). Надеюсь, поможет!
источник
С сайта Apple Dev:
источник
Резюме и интеграция со всех постов, после тестирования на себе; проверьте обновление для 4.x, 5.x ниже.
Начиная с версии 3.2, вы не можете изменить ориентацию запущенного приложения из кода.
Но вы можете запустить приложение с фиксированной ориентацией, хотя сделать это непросто.
Попробуйте по этому рецепту:
UISupportedInterfaceOrientations
вInfo.plist
файлеshouldAutorotateToInterfaceOrientation:
метод (конечно, чтобы вернуть то же значение, которое вы определили в plist)во всех контроллерах представления установите фоновое представление с
self.view.frame = CGRectMake(0, 0, 480, 320)
в
viewDidLoad
методе.Обновление (iOS 4.x, 5.x) : в Руководстве по программированию приложений Apple iOS есть параграф «Запуск в ландшафтном режиме» в главе «Расширенные приемы работы с приложениями».
Ссылки:
источник
Сначала установил в info.plist
затем я помещаю этот код в applicationDidFinishLaunching:
Таким образом, я могу работать с представлением в Интерфейсном Разработчике в ландшафтном режиме.
источник
Ответ sasb и michaelpryor кажется правильным, но если он не работает для вас, попробуйте эту альтернативу:
Или вот этот:
Или вот этот:
Возможно, вам также придется
window makeKeyAndVisible;
сначала позвонить .Несколько ссылок: Разработка в ландшафтном режиме , iPhone SDK: как установить только ландшафтный режим?
@Robert: см . IPhone SDK, NDA и Stack Overflow .
источник
Я удивлен, что никто еще не придумал этот ответ:
Во всех моих тестах при отклонении модального контроллера представления, установленная предпочтительная ориентация родительского контроллера
shouldAutorotateToInterfaceOrientation
представления соблюдается, даже если он является частью UINavigationController. Итак, решение простое:Создайте фиктивный UIViewController с UIImageView для фона. Установите в качестве изображения изображение default.png, которое ваше приложение использует при запуске.
Когда
viewWillAppear
вызывается в корневом контроллере представления, просто представьте фиктивный контроллер представления без анимации.когда
viewDidAppear
вызывается в вашем фиктивном контроллере представления, отключите контроллер представления с красивой анимацией перекрестного растворения.Это не только работает, но и хорошо выглядит! Кстати, просто для пояснения я делаю контроллер корневого представления
viewWillAppear
следующим образом:источник
В последней версии Руководства по программированию для iPhone OS есть полный раздел с примерами кода. Я уверен, что это недавнее дополнение, так что, возможно, вы его пропустили. В нем объясняются все условия, которые вы должны соблюдать; в принципе...
Найдите «Запуск в ландшафтном режиме», стр. 102.
источник
См. Этот ответ: Ландшафтный режим ТОЛЬКО для iPhone или iPad
Хотя, если вы используете смешанные режимы, вам может быть лучше с
источник