1.如果不通过代码来进行控制,采用XCode全局控制的方法 可以在项目属性的
图1
里面进行设置,同时,如果同时支持IPAD和Iphone 需要检查一下info里面的
图2
这两项,这两项可以分别来控制iPhone和Ipad屏幕旋转方法。
2.使用代码控制,
首先先建议,如果要使用代码来控制APP的旋转,首先先去掉上面两图的所有选项,如图1,去掉四个方向的所有勾选,图2中,去掉红圈中所有的子项。
因为程序中是优先按照上述设置来进行屏幕旋转控制,所以如果你不这么做 ,可能会出现设置选项和代码里面控制产生冲突,在实际测试中可能会出现各种莫名其妙的旋转问题
(之前因为图2中ipad的子项没有去掉,导致在ipad中测试的时候,出现各种布局错误和旋转不按照代码设定进行)
使用代码控制有两种方法
1.全局控制屏幕旋转支持的方法:
在appdelegate里面添加下面的方法,示例代码为只支持竖屏
- (NSUInteger)application:(UIApplication *)application supportedInterfaceOrientationsForWindow:(UIWindow *)window{
return UIInterfaceOrientationMaskPortrait;
}
使用该方法可以直接统一程序所有页面支持的旋转方向,之后只需在后面的viewController重写
- (BOOL)shouldAutorotate
{
return NO;
}
就可以控制该viewController是否旋转了
如果说程序支持多个方向的旋转,还可以在viewController中设置默认viewController在出现时屏幕的方向,如下代码,该viewController则是以默认竖屏启动
- (UIInterfaceOrientation)preferredInterfaceOrientationForPresentation
{
return UIInterfaceOrientationPortrait;
}
2.局部控制
使用该方法就是在每个viewController都重写下面3个方法,这样做虽然比较繁琐,但是可以精确的控制每一个viewController的旋转方向,同时还可以通过控制
shouldAutorotate的返回值来实时的控制viewController是否可以旋转(如按下某个按钮屏幕就不能旋转了 ,此时返回NO就可以了)
- (BOOL)shouldAutorotate
{
return NO;
}
- (NSUInteger)supportedInterfaceOrientations
{
return UIInterfaceOrientationMaskPortrait;
}
- (UIInterfaceOrientation)preferredInterfaceOrientationForPresentation
{
return UIInterfaceOrientationPortrait;
}
使用该方式的好处就是可以根据自己的程序需求,根据程序参数来实时的修改屏幕旋转参数