3

我遇到了设备旋转问题。除了显示公司启动画面的 ONE 视图之外,我想将所有剩余的应用程序视图锁定为纵向显示。在项目设置中,支持的方向是纵向和横向。在“Company Splash”中,它工作正常,并且无论我如何旋转设备,视图旋转都被锁定到 LandscapeLeft。在所有其他视图中,当我将设备向左旋转时,视图会发生变化,而不是保持纵向显示。连开枪的方法都没有?如果我从项目中支持的方向中删除横向左侧,则会破坏“公司飞溅”视图。我尝试将shouldAutorotatereturn 更改为NO,但这没有帮助。试图通过这里发布的建议来工作,但这没有帮助。如果我将以下代码放入我的 AppDelegate.m 中,所有内容都被锁定为纵向模式,并且“公司启动画面”在访问时崩溃。

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

除了一个屏幕外,无论设备如何旋转,如何将视图锁定为纵向模式?

** 来自“Company Splash”视图的方法。再次,按预期工作。

-(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 是根控制器,而我在 ViewController 中?连开枪的方法都没有?

4

3 回答 3

6

将观察者添加到要旋转的视图的 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;
  };
}
于 2013-02-27T13:08:50.357 回答
2

将此方法放入您希望锁定在某个方向的视图控制器中。

-(NSUInteger)supportedInterfaceOrientations
{
    return UIInterfaceOrientationMaskLandscape;
}

只需更改为您想要的方向(以上将其锁定为横向)

于 2014-09-04T20:48:26.180 回答
0

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

- (BOOL)shouldAutorotateToInterfaceOrientation:(UIInterfaceOrientation)interfaceOrientation
{
    if (interfaceOrientation == UIInterfaceOrientationPortrait) {
    return (interfaceOrientation == UIInterfaceOrientationLandscapeRight);
    } else {
    return (interfaceOrientation == UIInterfaceOrientationLandscapeRight);
    }
}
于 2013-02-27T11:32:37.683 回答