Xcode中 - 如何保持锁定到肖像模式的看法,但仍然允许一个视图旋转?(xcode - How d

2019-07-20 15:12发布

我在与设备旋转的问题。 除了一个观点,我在那里显示公司启动画面,我想锁定所有其余的应用数据视图的肖像显示。 在项目设置支持的方向是纵向和LandscapeLeft。 在“公司飞溅”它工作正常,视图旋转锁定LandscapeLeft不管我怎么旋转设备。 在所有其他的意见时,我的设备向左旋转视图会改变的,而不是停留在纵向显示。 该方法甚至不烧? 如果我删除景观从该项目的支撑取向离开,是砸了“公司飞溅”视图。 我试图改变shouldAutorotate返回NO ,但这并没有帮助。 试图通过张贴的建议适合我的方式在这里 ,但没有帮助。 如果我把下面的代码到我的AppDelegate.m,访问时都被锁定到肖像模式和“公司飞溅”崩溃。

-(NSUInteger)application:(UIApplication *)application supportedInterfaceOrientationsForWindow:(UIWindow *)window
{
    return UIInterfaceOrientationMaskPortrait | UIInterfaceOrientationMaskPortraitUpsideDown;
}

如何锁定视图到肖像模式,无论设备如何除了一个屏幕旋转?

**从“公司飞溅”视图的方法。 同样,就像它应该。

-(NSInteger)supportedInterfaceOrientations
{
    return UIInterfaceOrientationMaskLandscapeLeft;
}

**从所有其他视图,其中转出人像的时候,我不希望他们的方法

-(BOOL)shouldAutorotateToInterfaceOrientation:(UIInterfaceOrientation)interfaceOrientation
{
    // IOS5 Only returning that it should rotate to potrait
    return (interfaceOrientation == UIDeviceOrientationPortrait);
}

-(BOOL)shouldAutorotate
{
    // forcing the rotate IOS6 Only
    return YES;
}

-(NSInteger)supportedInterfaceOrientations
{
    // return number or enum IOS6 Only
    return UIInterfaceOrientationMaskPortrait;
}

我想也许这可能是因为一个的UITabBarController是根控制器和我在一个视图控制器关的呢? 该方法甚至不烧?

Answer 1:

观察者添加到您要旋转这样的观点的viewDidLoad方法:

[[UIDevice currentDevice] beginGeneratingDeviceOrientationNotifications];
[[NSNotificationCenter defaultCenter]
 addObserver:self selector:@selector(orientationChanged:)
 name:UIDeviceOrientationDidChangeNotification
 object:[UIDevice currentDevice]];

然后设置根据orientationChanged方法这样内部的横向视图的观点:

- (void) orientationChanged:(NSNotification *)note{
UIDevice * device = [UIDevice currentDevice];
switch(device.orientation)
{
    case UIDeviceOrientationPortrait:

        break;
    case UIDeviceOrientationPortraitUpsideDown:

        break;
    case UIDeviceOrientationLandscapeLeft:

        break;
    case UIDeviceOrientationLandscapeRight:

        break;

    default:
        break;
  };
}


Answer 2:

拍这种方法成你想要锁定在某一方向的视图控制器。

-(NSUInteger)supportedInterfaceOrientations
{
    return UIInterfaceOrientationMaskLandscape;
}

只是改变的方向你想要(以上的锁它的景观)



Answer 3:

也许ü应该允许所有的方向,并在每个班级锁定纵向除公司飞溅

- (BOOL)shouldAutorotateToInterfaceOrientation:(UIInterfaceOrientation)interfaceOrientation
{
    if (interfaceOrientation == UIInterfaceOrientationPortrait) {
    return (interfaceOrientation == UIInterfaceOrientationLandscapeRight);
    } else {
    return (interfaceOrientation == UIInterfaceOrientationLandscapeRight);
    }
}


文章来源: xcode - How do I keep views locked into portrait mode, but still allow one view to rotate?