Лучшие практики для навигации в ландшафтном и портретном режиме в UINavigationController - PullRequest
1 голос
/ 08 июня 2011

Я занимаюсь разработкой приложения для iPad, которое поддерживает как альбомную, так и книжную ориентацию. У меня есть два разных файла пера для моего rootviewController.Вот сценарий проблемы -
1.Выберите элемент из корневого представления в режиме портретного изображения, нажмите следующий вид в портретной ориентации.
2. Поверните устройство
3. Нажмите кнопку возврата на панели навигации
Представление загружается из стека и является представлением rootViewController.Пока устройство находится в горизонтальном режиме.
Пожалуйста, предложите решение для решения вышеуказанной проблемы.
Также, пожалуйста, предложите рекомендации, которым следует следовать при обработке поворотов устройства.

Ответы [ 3 ]

1 голос
/ 08 июня 2011

Используйте уведомления в следующих методах и установите координаты в методе receiveRotate .

-(void)viewWillAppear:(BOOL)animated
{
[[NSNotificationCenter defaultCenter] addObserver:self selector:@selector(receivedRotate:) name:UIDeviceOrientationDidChangeNotification object:nil];
[[UIDevice currentDevice] beginGeneratingDeviceOrientationNotifications];

}

-(void)viewWillDisappear:(BOOL)animated
{
[[NSNotificationCenter defaultCenter] removeObserver:self name:UIDeviceOrientationDidChangeNotification object:nil];
}

Например, в receiveRotate вы можете установить координаты вашего табличного представления как:

if (orientation == UIDeviceOrientationLandscapeLeft||orientation==UIDeviceOrientationLandscapeRight)
    {
        [tblView reloadData];
        tableX=70.0;

    }
    else
    {
        [tblView reloadData];
        tableX=48.0;
}  

Также вызовите recieveRotate в viewDidLoad, что очень важно.

1 голос
/ 08 июня 2011

Вам нужно проверить ориентацию во время выполнения в методе - (BOOL) shouldAutorotateToInterfaceOrientation: (UIInterfaceOrientation) interfaceOrientation {

} & изменить элементы вашего взгляда в соответствии с ориентацией.

1 голос
/ 08 июня 2011

проверьте этот метод, может быть вам помочь ...

- (BOOL)shouldAutorotateToInterfaceOrientation:(UIInterfaceOrientation)interfaceOrientation {
// Return YES for supported orientations.
return ( 
        interfaceOrientation == UIInterfaceOrientationPortrait 
        || interfaceOrientation == UIInterfaceOrientationLandscapeLeft
        || interfaceOrientation == UIInterfaceOrientationLandscapeRight
        || interfaceOrientation == UIInterfaceOrientationPortraitUpsideDown
        );}

или попробуйте установить autoresizingMask для контроллеров, надеюсь, это поможет вам.

...