Обработка ландшафтного отображения при повороте устройства iphone - PullRequest
2 голосов
/ 27 октября 2011

Я работаю над приложением для iphone с панелями вкладок, каждая из которых связана с контроллером навигации.В одном из этих контроллеров у меня есть табличное представление с некоторым списком, а при выборе строки другое представление отображает определенную информацию и кнопку для просмотра некоторых связанных фотографий.

У меня проблема с отображением фотографии.в альбомной ориентации.

Контроллер просмотра фотографий содержит UIImageView для отображения по одной фотографии за раз, и этот размер объекта ImageView составляет 320x460 и отображается в полноэкранном режиме.Для обработки поворота я добавил следующий код:

-(BOOL)shouldAutorotateToInterfaceOrientation:(UIInterfaceOrientation)interfaceOrientation
{
   return (interfaceOrientation == UIInterfaceOrientationPortrait || interfaceOrientation == UIInterfaceOrientationLandscapeLeft || interfaceOrientation == UIInterfaceOrientationLandscapeRight);
}

Но он не вращается, и строка состояния симулятора iphone все еще находится в портретном положении, поэтому не поворачивается тоже.

У меня естьтакже изменил метод следующим образом:

-(BOOL)shouldAutorotateToInterfaceOrientation:(UIInterfaceOrientation)interfaceOrientation
{
   return YES;
}

Все еще нет изменений при повороте устройства.А опции в Проект-> Сводка (вкладка) -> Ориентация поддерживаемого устройства-> Желаемые ориентации явно включают альбомный режим (вправо / влево).

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

Спасибо за помощь,

Стефан

Ответы [ 3 ]

2 голосов
/ 27 октября 2011

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

Если нецелесообразно поддерживать альбомную ориентацию на других контроллерах представления, возможно, вы можете попробоватьнекоторые взломы, например, путем создания подкласса UITabBarController и переопределения его shouldAutorotateToInterfaceOrientation, чтобы вместо этого возвращать YES, если контроллер представления current возвращает YES.Но это может привести к отклонению вашего приложения как несоответствующего Руководству по интерфейсу пользователя, поскольку вы пытаетесь обойти стандартное поведение интерфейса.

0 голосов
/ 27 октября 2011

Вы ищете не в том месте: в файле RootViewController.m найдите следующий код:

#elif GAME_AUTOROTATION == kGameAutorotationUIViewController
//
//lots of useless comments
//
return (UIInterfaceOrientationIsPortrait(interfaceOrientation) ); //THIS LINE HERE
// return (UIInterfaceOrientationIsLandScape(interfaceOrientation) ); 

строка, которая говорит return (UIInterface ... Portrait) - это строка, которая определяет ваше приложениевращающиеся возможности.Вы можете изменить это на что угодно, чтобы позволить вам иметь возможность полностью вращаться, удерживать его в определенной ориентации или как угодно ...

0 голосов
/ 27 октября 2011

Проверьте, не находитесь ли вы в каком-либо контроллере представления подкласса контейнера (например, в ваших собственных подклассах UINavigationController или UITabBarController).Если это так, убедитесь, что он не переопределяет shouldAutorotateToInterfaceOrientation: метод.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...