iPhone приложение в ландшафтном режиме, 2008 систем

голоса
88

Примечание: этот вопрос с 2008 года и в настоящее время имеет лишь исторический интерес.


Какой самый лучший способ для создания приложений iPhone, который работает в ландшафтном режиме с самого начала, независимо от положения устройства?

Как программно и с помощью Interface Builder.

Задан 02/08/2008 в 11:47
источник пользователем
На других языках...                            


8 ответов

голоса
46

Исторический ответ только. Эффектно из даты:

Пожалуйста, обратите внимание, что этот ответ сейчас очень устарел.

Этот пост является лишь историческим любопытством .


Волнующие новости! Как обнаружил Эндрю ниже, эта проблема была решена с помощью компании Apple в 4.0+.

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

По состоянию на апрель 2011 года не представляется возможным, чтобы проверить или даже построить все, что ниже 4,0, так что вопрос чисто историческое любопытство. Это невероятно, как много проблем он вызвал разработчик так долго!


Вот оригинальное обсуждение и решение. Это совершенно не имеет значения в настоящее время, так как эти системы не являются даже в рабочем состоянии.


Это очень трудно, чтобы полностью сделать эту работу - есть по крайней мере три проблемы / ошибки в игре.

попробуйте это .. интерфейс строитель ландшафтный дизайн

Обратите внимание , в частности , что там , где он говорит « и вы должны использовать shouldAutorotateToInterfaceOrientation правильно везде» это означает , что во всем мире, все полноэкранные виды.

Надеюсь, что это помогает в этом кошмаре!

Важное напоминание о ДОПОЛНИТЕЛЬНЫХ хорошо известной проблемы под рукой здесь: если вы пытаетесь переключаться между более чем одной точки зрения (все альбомной), IT просто не работает . Важно помнить об этом , или вы будете тратить дни на эту проблему. Это в буквальном смысле не представляется возможным. Это самая большая открытой, известная, ошибка на платформе IOS. Там буквально нет способа сделать аппаратные сделать второй вид загружаемый, альбомным. Раздражает , но простой обходной путь, и то , что вы должны сделать, это есть тривиальное мастер UIViewController , который ничего не делает , но сидеть там , и пусть вы переключаться между вашими взглядами.

Другими слова, в прошивке из-за основное ноу ошибки:

[window addSubview:happyThing.view];
[window makeKeyAndVisible];

Вы можете сделать это только один раз . Позже, если вы попытаетесь удалить happyThing.view, и вместоположить туда newThing.view, он не работает - и баста. Машина никогда не будет вращать вид на ландшафт. Там нет трюк исправить, даже Appleне может заставить его работать. Чтобы обойтипроблему вы должны принять этоимеющая общую UIViewControllerкоторый просто сидит там и просто держит свои различные виды (happyThing, newThing и т.д.). Надеюсь, поможет!

Ответил 27/03/2010 в 22:13
источник пользователем

голоса
40

От компании Apple Dev сайта:

Для того, чтобы запустить приложение в ландшафтном режиме, так что в строке состояния находится в соответствующем положении непосредственно, редактировать файл Info.plist добавить ключ UIInterfaceOrientation с соответствующим значением (UIInterfaceOrientationLandscapeRight или UIInterfaceOrientationLandscapeLeft), как показано в листинге 2.

Листинг 2: Запуск приложения в ландшафтном режиме

<key>UIInterfaceOrientation</key>
<string>UIInterfaceOrientationLandscapeRight</string>
Ответил 31/08/2008 в 15:38
источник пользователем

голоса
27

Резюме и интеграция со всех постов, после тестирования его самого; проверить обновления для 4.x, 5.x ниже.

По состоянию на 3.2, вы не можете изменить ориентацию запущенного приложения из кода.

Но вы можете запустить приложение с фиксированной ориентацией, хотя это и это не просто.

Попробуйте с этим рецептом:

  1. установить ориентацию UISupportedInterfaceOrientationsв Info.plistфайле
  2. в окне определения 480x320 «базовый контроллер представления». Любой другой вид будет добавлен в качестве подвида к его мнению.
  3. во всех контроллерах просмотра установленных на shouldAutorotateToInterfaceOrientation:метод (чтобы вернуть то же значение, определенные в PLIST, конечно)
  4. во всех контроллерах зрения установить фоновый вид с

    self.view.frame = CGRectMake(0, 0, 480, 320)

    в viewDidLoadметоде.

Обновление (IOS 4.x, 5.x) : Руководство по программированию Apple , IOS App имеет «Запуск в ландшафтном режиме» пункт в «Advanced App Tricks» главы.

Рекомендации:

Ответил 07/05/2010 в 12:02
источник пользователем

голоса
7

Сначала я поставил в info.plist

<key>UIInterfaceOrientation</key>
<string>UIInterfaceOrientationLandscapeRight</string>

Затем я ставлю этот код в applicationDidFinishLaunching:

CGAffineTransform rotate = CGAffineTransformMakeRotation(1.57079633);
[window setTransform:rotate];

CGRect contentRect = CGRectMake(0, 0, 480, 320); 
window.bounds = contentRect; 
[window setCenter:CGPointMake(160.0f, 240.0f)]; 

Таким образом, я могу работать на представлении в Interface Builder в ландшафтном режиме.

Ответил 20/11/2009 в 21:58
источник пользователем

голоса
6

Ответ SASB в и michaelpryor, как представляется, будет правильным, но если это не работает для вас, попробуйте этот вариант:

- (void)applicationDidFinishLaunchingUIApplication *)application {
    application.statusBarOrientation = UIInterfaceOrientationLandscapeRight;
}

Или это:

[[UIDevice currentDevice] setOrientation:UIInterfaceOrientationLandscapeRight];

Или это:

[application setStatusBarOrientation: UIInterfaceOrientationLandscapeRight animated:NO];

Вы также можете позвонить window makeKeyAndVisible;первым.

Несколько ссылок: Разработка в ландшафтном режиме , iPhone SDK: Как заставить только в ландшафтном режиме?

@Robert: пожалуйста , обратитесь к The iPhone SDK, NDA и переполнения стека .

Ответил 31/08/2008 в 16:01
источник пользователем

голоса
5

Я удивлен, что никто не придумал этот ответ еще:

Во всех моих тестах , когда отклоняя модальный контроллер представления предпочтительной ориентации зрения контроллера родительского устроенный в shouldAutorotateToInterfaceOrientationпочитаются даже когда часть UINavigationController. Таким образом, решение этой проблемы очень просто:

Создание фиктивной UIViewController с UIImageView для фона. Установите изображение в изображение Default.png ваше приложение использует при запуске.

Когда viewWillAppearвызывается в контроллере зрения корня, просто представить фиктивный контроллер представления без анимации.

когда viewDidAppearвызывается в вашей фиктивной контроллер представления, отклонить контроллер с красивым крестом вида растворять анимации.

Это не только работа, но она хорошо выглядит! Кстати, как раз для уточнения я сделать вид корневого контроллера , viewWillAppearкак это:

- (void)viewWillAppear:(BOOL)animated
{
 if ( dummy != nil ) {
  [dummy setModalTransitionStyle:UIModalTransitionStyleCrossDissolve];
  [self presentModalViewController:dummy animated:NO];
  [dummy release];
  dummy = nil;
 }
...
}
Ответил 27/11/2010 в 08:38
источник пользователем

голоса
4

Последнее Руководство по программированию iPhone OS имеет полный раздел по этому вопросу, с примерами кода. Я уверен, что это последнее дополнение, так что, может быть, вы пропустили его. Это объясняет все условия, которые вы должны соблюдать; в основном...

  • установить Info.plist свойства (это изменяет положение в строке состояния, но не вид)
  • вращать вид вручную вокруг его центра, на любой ваш UIViewController viewDidLoad: метод или ваш applicationDidFinishLaunching: метод или осуществлять автоматический поворот ( «автоматического изменения поведения», стр 124)

Посмотрите на «Запуск в ландшафтном режиме», страница 102.

Ответил 04/09/2008 в 22:57
источник пользователем

голоса
3

Смотрите этот ответ: Landscape режим ТОЛЬКО для iPhone или IPad

  1. добавить ориентацию Plist
  2. shouldAutorotateToInterfaceOrientation = YES во всех файлах

Хотя, если вы используете смешанные режимы, вы могли бы быть лучше с

[[UIDevice currentDevice] setOrientation:UIInterfaceOrientationLandscapeRight];
Ответил 06/03/2011 в 08:56
источник пользователем

Cookies help us deliver our services. By using our services, you agree to our use of cookies. Learn more