Есть ли способ изменить ориентацию интерфейса? - PullRequest
1 голос
/ 16 августа 2011

У меня есть файл MainWindow.xib, и я пытаюсь создать второй файл .xib, который называется MainWindowLandscape.xib.У меня есть много файлов .xib, и я разрабатываю их отдельно для Portrait и Landscape.

Я хочу назначить их в MainWindow.xib и MainWindowLandscape.xib (на основе UITabbarController), я имею в виду, я буду назначать портретные виды в MainWindow.xib и альбомные виды в MainWindowLandscape.xib.Это возможно или как проще всего?

Все виды (портретные и альбомные) делают одно и то же друг в друге.Будет изменен только пользовательский интерфейс.

Большое спасибо.

1 Ответ

1 голос
/ 16 августа 2011

Вы можете сделать это, переопределив

- (BOOL)shouldAutorotateToInterfaceOrientation:(UIInterfaceOrientation)toInterfaceOrientation

в контроллерах представления, связанных с двумя файлами xib.

Конкретно, если вы хотите, чтобы ориентация всегда была портретной, выполните:

- (BOOL)shouldAutorotateToInterfaceOrientation:(UIInterfaceOrientation)toInterfaceOrientation      {
    if (UIInterfaceOrientationIsPortrait(toInterfaceOrientation))
       return YES;
    return NO;
}

Если вы хотите, чтобы ваш контроллер представления всегда отображался в альбомной ориентации:

- (BOOL)shouldAutorotateToInterfaceOrientation:(UIInterfaceOrientation)toInterfaceOrientation      { 
    if (UIInterfaceOrientationIsLandscape(toInterfaceOrientation))
       return YES;
    return NO;
}

Как только вы это сделаете, вы должны помнить, что контроллеры будут автоматически вращаться, только если они удовлетворяют условиям для этого. В частности, для контроллеров панели вкладок все внутренние контроллеры должны поддерживать заданную ориентацию (т. Е. Они должны реализовывать shouldAutorotateToInterfaceOrientation, как указано выше).

...