我制作了一个针对iOS 5和iOS 6的应用程序,但由于某种原因,在使用iOS 5设备(无论是iPhone还是iPad)时,它不会旋转,而只有在使用iOS 6设备时才能旋转。我的应用程序是通用的。请帮助我解决这个问题!谢谢
我制作了一个针对iOS 5和iOS 6的应用程序,但由于某种原因,在使用iOS 5设备(无论是iPhone还是iPad)时,它不会旋转,而只有在使用iOS 6设备时才能旋转。我的应用程序是通用的。请帮助我解决这个问题!谢谢
- (BOOL)shouldAutorotateToInterfaceOrientation:(UIInterfaceOrientation)toInterfaceOrientation
{
return ((toInterfaceOrientation == UIInterfaceOrientationPortrait) || (toInterfaceOrientation == UIInterfaceOrientationPortraitUpsideDown));
}
- (NSUInteger)supportedInterfaceOrientations
{
return (UIInterfaceOrientationMaskPortrait | UIInterfaceOrientationMaskPortraitUpsideDown);
}
iOS 5和iOS 6调用不同的方向和旋转代理。在iOS 5中,实现:
shouldAutorotateToInterfaceOrientation:,在iOS 6中已被弃用。
因此,在iOS 6中,请确保设置根视图控制器,并实现:
shouldAutorotate:, supportedInterfaceOrientations和supportedInterfaceOrientationsForWindow:
我遇到了类似的问题。您可以检查这个问题的答案:
总结一下,在iOS 5和iOS 6中使自动旋转完全工作,并且处理PortraitUpsideDown方向,我不得不实现一个自定义的UINavigationController,并将其分配给self.window.rootViewController
在应用程序代理的didFinishLaunchingWithOptions
方法中。
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;
}
[[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)); }
返回值为真,如果设备方向是竖屏或者倒置的竖屏。