iOS 6的定位问题(iOS 6 orientation issues)

2019-08-01 07:32发布

我有一个应用程序,它通常是一个UIViewController的肖像应用程序,只显示横向视图。 直到新的iOS 6的发布,它工作正常。

我真不明白方位的iOS 6是如何工作的所以我写了一个测试应用程序。 下面是我做的:

  • 设置应用程序的方向,以支持所有的方向。

  • 我使用的是故事板。 该RootViewController的嵌入的UINavigationController这是在肖像。

  • 在RootViewController的代码:

    - (NSUInteger)supportedInterfaceOrientations

    {

    返回UIInterfaceOrientationMaskPortrait | UIInterfaceOrientationMaskPortraitUpsideDown;

}

  • 当我点击打开栏按钮,我会推这应该是在风景模式另一个(SecondViewController)视图控制器:

    - (NSUInteger)supportedInterfaceOrientations {返回UIInterfaceOrientationMaskLandscapeLeft | UIInterfaceOrientationMaskLandscapeRight; }

虽然这种方法是正确调用,所述第二视图控制器总是也在纵向模式。

任何人都可以给我一些建议吗? 谢谢

Answer 1:

这里是我的解决方案:

在第二视图控制器的viewDidLoad:

- (void)viewDidLoad
{
    [super viewDidLoad];

    UIViewController *viewController = [[UIViewController alloc] init];
    [self presentViewController:viewController animated:NO completion:^{
        [viewController dismissViewControllerAnimated:NO completion:nil];
    }];
}

这将迫使第二视图旋转到其解决我的问题横向。 它适用于iOS 5和6。



Answer 2:

对于iOS-6,我已经做到了这一点。 它运行良好

- (NSUInteger)supportedInterfaceOrientations{
    return UIInterfaceOrientationMaskPortrait | UIInterfaceOrientationMaskLandscapeLeft;}

- (UIInterfaceOrientation)preferredInterfaceOrientationForPresentation{
    return UIInterfaceOrientationLandscapeLeft;}

在第二次查看

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


Answer 3:

我认为,最好的解决办法就是坚持苹果官方的文档。 所以,根据我使用下面的方法,一切都进行得很好在iOS 5和6在你一切ViewControllers的覆盖下面的方法。

- (BOOL)shouldAutorotateToInterfaceOrientation:(UIInterfaceOrientation)interfaceOrientation
{
    // Return YES for supported orientations
    return UIInterfaceOrientationIsPortrait(interfaceOrientation);
}

对于iOS 6的方法,第一种方法返回所支持的方向面具(作为其名称中标明),你可以将它更改为横向或什么套房,为您最好的。

-(NSInteger)supportedInterfaceOrientations{

    return UIInterfaceOrientationMaskPortrait; //UIInterfaceOrientationMaskPortrait or LandscapeLeft ... 
}

第二个这就是告诉你VC这是首选接口方向时,VC将被显示出来。

- (UIInterfaceOrientation)preferredInterfaceOrientationForPresentation
{
    return UIInterfaceOrientationPortrait; //tells your VC in which orientation it should be presented, if you set Porttrait it would be in Portrait or otherwise ...
}

该解决方案是工作顺利,我不喜欢创建宏和其他东西的想法,去解决这个简单的解决方案。 希望这有助于...



文章来源: iOS 6 orientation issues