我在通用应用程序中工作,直到ios 5,但在ios 6中有定向问题。我的应用程序仅处于纵向模式。问题是当我的ipad处于横向模式时,如果我启动我的应用程序而不是方向不会改变为protrait。所以请帮我一些代码,这样我就可以在app启动之前强制我的应用程序处于protrait模式,而不依赖于设备的方向
答案 0 :(得分:4)
首先,我们必须在Targets-> Summary ...
中设置支持的方向在iOS6.0中,应该不推荐使用onAutorotateToInterfaceOrientation方法。所以,我们必须使用shouldAutorotate方法而不是这个方法。
使用supportedInterfaceOrientations方法,如果我们想要所有方向,我们必须设置我们想要的方向,如UIInterfaceOrientationMaskAll
答案 1 :(得分:2)
这种情况正在发生,因为Apple改变了管理UIViewController方向的方式。在Ios6中,Oreintation处理不同。在iOS6容器(例如UINavigationController)中,不要咨询他们的孩子以确定他们是否应该自动旋转。默认情况下,应用程序和视图控制器支持的界面方向设置为iPad惯用语的UIInterfaceOrientationMaskAll和iPhone惯用语的UIInterfaceOrientationMaskAllButUpsideDown.So设备默认情况下更改方向。
因此需要执行一些步骤。
1 - 从此处设置方向
2 - 将FirstViewController中的此代码添加到RootViewController
@implementation UINavigationController (RotationIn_IOS6)
//Here UINavigationController is the RootViewController added To the Window
-(BOOL)shouldAutorotate
{
return [[self.viewControllers lastObject] shouldAutorotate];
}
-(NSUInteger)supportedInterfaceOrientations
{
return [[self.viewControllers lastObject] supportedInterfaceOrientations];
}
- (UIInterfaceOrientation)preferredInterfaceOrientationForPresentation
{
return [[self.viewControllers lastObject] preferredInterfaceOrientationForPresentation];
}
@end
**将以下方法放在ViewController中,在IOS6中引入允许Oreintation Change **
- (BOOL)shouldAutorotate
{
return NO;
}
/*Return the Number of Oreintation going to supported in device*/
- (NSUInteger)supportedInterfaceOrientations
{
return (UIInterfaceOrientationMaskPortrait | UIInterfaceOrientationMaskPortraitUpsideDown );
}
// Returns interface orientation masks.
- (UIInterfaceOrientation)preferredInterfaceOrientationForPresentation
{
return (UIInterfaceOrientationPortrait | UIInterfaceOrientationPortraitUpsideDown ) ;
}
答案 2 :(得分:0)
在ViewController.m
中,您必须定义支持的方向。在IOS 6中,这是处理支持方向的方法。
- (NSUInteger)supportedInterfaceOrientations{
return UIInterfaceOrientationMaskAll;
}
UIInterfaceOrientationMaskAll
表示它将支持view
的所有方向。
另请阅读Apple文档 - Doc about Orientation