4

我制作了一个针对 iOS 5 和 iOS 6 的应用程序,由于某种原因,它仅在使用 iOS 6 的设备(无论是在 iPhone 还是 iPad 上)时才会旋转,而不会在使用 iOS 5 的设备上旋转。我的应用程序是通用的。请帮我解决这个问题!谢谢

4

5 回答 5

8
- (BOOL)shouldAutorotateToInterfaceOrientation:(UIInterfaceOrientation)toInterfaceOrientation
{
    return ((toInterfaceOrientation == UIInterfaceOrientationPortrait) || (toInterfaceOrientation == UIInterfaceOrientationPortraitUpsideDown));
}

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

在所有 uiviewcontroller 子类中覆盖这两个方法......这将适用于 ios 6 及更早版本

于 2013-03-06T06:22:20.457 回答
5

iOS 5 和 iOS 6 调用不同的方向和旋转代理。在 iOS 5 中,实现:

shouldAutorotateToInterfaceOrientation:,在 iOS 6 中已弃用。

所以,在 iOS 6 中,确保你设置了一个根视图控制器,并实现:

shouldAutorotate:、supportedInterfaceOrientations 和supportedInterfaceOrientationsForWindow:

于 2012-10-27T18:08:30.290 回答
0

shouldAutorotateToInterfaceOrientation 在 ios6 中已弃用。

所以如果你想在两个操作系统版本上运行应用程序,那么添加 shouldAutorotateToInterfaceOrientation 如下

//for ios6
 - (BOOL)shouldAutorotate {

        UIInterfaceOrientation orientation = [[UIDevice currentDevice] orientation];

        if (orientation == UIInterfaceOrientationLandscapeLeft  ||orientation ==  UIInterfaceOrientationLandscapeRight ) 
{

            return YES;
        }
        return NO;
        }

//for ios5

- (BOOL)shouldAutorotateToInterfaceOrientation:(UIInterfaceOrientation)interfaceOrientation {
    //interfaceOrientation == UIInterfaceOrientationLandscapeRight; 
    if (interfaceOrientation == UIInterfaceOrientationLandscapeLeft  ||interfaceOrientation ==  UIInterfaceOrientationLandscapeRight ) {

        return YES;
    }
    return NO;
}
于 2013-02-23T13:41:57.920 回答
0

我有一个类似的问题。你可以检查这个问题的答案:

旋转在 iOS6 上表现不同

总而言之,要让自动旋转在 iOS 5 和 iOS 6 中充分发挥作用,并且还要处理 PortraitUpsideDown 方向,我必须实现一个自定义 UINavigationController 并将其分配给self.window.rootViewController应用程序委托didFinishLaunchingWithOptions方法。

于 2012-10-28T02:41:04.333 回答
-1

为了在 ios5 和 ios6 中支持自动旋转,我们需要在 ios6 的情况下提供回调......`[[UIDevice currentDevice] beginGeneratingDeviceOrientationNotifications];

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

我们需要打电话

- (NSUInteger)supportedInterfaceOrientations {
return UIInterfaceOrientationMaskPortrait;

}

-(BOOL)shouldAutoRotate{
    return YES;
  }

适用于 iOS5

- (BOOL)shouldAutorotateToInterfaceOrientation:(UIInterfaceOrientation)toInterfaceOrientation

{ return ((toInterfaceOrientation == UIInterfaceOrientationPortrait) || (toInterfaceOrientation == UIInterfaceOrientationPortraitUpsideDown)); }

于 2013-08-22T07:29:12.823 回答