Ориентация Пейзаж -> Портрет не работает - PullRequest
0 голосов
/ 07 ноября 2011

У меня другая проблема с ориентацией.Но это очень сложно.Мой RootViewController - это обычный NavigationController.

self.window.rootViewController = _naviController;

, в котором есть другой ViewController, давайте назовем его VC1.VC1 имеет несколько кнопок и меток.Это как обзор папок.

Если я нажимаю кнопку, я перехожу к следующему ViewController с 3 ViewController (Page) и другим набором кнопок (например, внутри папки, смотрящей на картинки / эскизы внутри):

Archiv *archiv = [[Archiv alloc] init];
[self.navigationController pushViewController:archiv animated:YES];
[archiv release];

в loadView:

firstPage = [[Page alloc] initViewWithFrame:CGRectMake(0, 0, 768, 960)];
[firstPage setRootViewController:self];
secondPage = [[Page alloc] initViewWithFrame:CGRectMake(0, -960, 768, 960)];
[secondPage setRootViewController:self];
thirdPage = [[Page alloc] initViewWithFrame:CGRectMake(0, 960, 768, 960)];
[thirdPage setRootViewController:self];

Если я сейчас снова нажму на кнопку активной страницы, нажмите на мой третий ViewController (изображение с изменением размера, перетаскиванием ...):

Picture *pic = [[Picture alloc] initWithPicURLString:urlString];
[rootViewController.navigationController pushViewController:pic animated:YES];
[pic release];

С помощью BackButton NavigationController я всегда могу вернуться к предыдущему представлению.

Некоторые дополнительные сведения:

Теперь сложная проблема:

Если я переключаюсь со 2-го ВК на 3-й ВК, измените ориентацию там с книжная на альбомная и нажмите кнопку BackButton, все работает (shouldAutorotateToInterfaceOrientation вызывает, размер кадра и происхождение меняется ...). НО Если я делаю это наоборот, я нахожусь в ландшафтном режиме , переключаюсь со 2-го ВК на 3-й ВК, поворачиваю в портретную и возвращаюсь ко 2-муVC с BackButton, status- и controllerBar находятся сверху, но shouldAutorotateToInterfaceOrientation не назывался .

Пожалуйста, помогите мне.$ Ч @ скалистый

Ответы [ 3 ]

1 голос
/ 11 ноября 2011

Попробуйте, у меня все работает:

-(void)viewWillAppear:(BOOL)animated
{
    [super viewWillAppear:animated];
    [self shouldAutorotateToInterfaceOrientation:[[UIApplication sharedApplication] statusBarOrientation] ];
}
0 голосов
/ 27 февраля 2014

shouldAutorotateToInterfaceOrientation вызывается только при повороте пользователя, поэтому, когда вы перемещаетесь из пейзажа в портрет или иным образом, затем просматриваете контроллер по-прежнему, поэтому, чтобы решить эту проблему, вы должны взломать код, это значит, когда вы нажимаете, чтобы посмотреть контроллер из пейзажа в портретнуюПример presentViewController:

ListCurrentViewController *list = [self.storyboard
   instantiateViewControllerWithIdentifier:@"ListCurrentViewController"];
               [self.navigationController presentViewController:list animated:NO completion:Nil];
               [list dismissViewControllerAnimated:NO completion:Nil];
               [self.navigationController pushViewController:list animated:YES];

в функции ListViewController, вызванной:

(UIInterfaceOrientation)preferredInterfaceOrientationForPresentation // iOS 6 autorotation fix { return UIInterfaceOrientationPortrait; }

, и вам нужно создать категорию для UINavigationController

(UIInterfaceOrientation)preferredInterfaceOrientationForPresentation {
    return [self.visibleViewController preferredInterfaceOrientationForPresentation];
}

Я надеюсь, что это решение поможет вам,

0 голосов
/ 09 ноября 2011

Сегодня мне пришла в голову мысль, что решить проблему, не зная причины. В моем третьем VC я только что создал указатель на 2nd View и сам назвал shouldAutorotateToInterfaceOrientation.

Но суть все та же: почему shouldAutorotateToInterfaceOrientation не звонит в описанной ситуации?

С уважением. $ Ч @ скалистый

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