我的应用程序是基于导航的应用程序,它支持 iOS 6。除了视图控制器之外,所有其他应用程序都只支持纵向模式。单独的特定视图控制器必须同时支持横向和纵向。
我搜索了很多关于这个的问题,但没有一个答案适合我。如果有人知道,请指导我
我在 Project -> Targets -> Summary -> Supportedorientation中将方向设置为Portait
我的应用程序是基于导航的应用程序,它支持 iOS 6。除了视图控制器之外,所有其他应用程序都只支持纵向模式。单独的特定视图控制器必须同时支持横向和纵向。
我搜索了很多关于这个的问题,但没有一个答案适合我。如果有人知道,请指导我
我在 Project -> Targets -> Summary -> Supportedorientation中将方向设置为Portait
首先,如果您正在为 iOS6 制作应用程序,您应该使用UIViewController 文档中介绍的 iOS6 方法。类似的方向方法shouldAutorotateToInterfaceOrientation
在 iOS6 中已弃用,iOS6 的替代方法是shouldAutoRotate
. 如果您的应用也支持 iOS5,您应该只使用旧方法。
其次,如果您UINavigationcontroller
在应用程序中使用并且需要具有不同的界面方向,那么 navigationController 可能会弄乱应用程序中的界面方向。可能的解决方案(对我有用)是实现自定义UINavigationController
并覆盖该自定义UINavigationController
类中的界面方向方法,这将使您的 viewControllers 根据您设置的方向旋转,因为您的控制器是从UINavigationController
. 不要忘记在您的特定视图控制器中添加这些方法。
自定义导航控制器.h
@interface CustomNavigationController : UINavigationController
@end
自定义导航控制器.m
@implementation CustomNavigationController
//overriding shouldRotate method for working in navController
-(BOOL)shouldAutorotate
{
return [self.topViewController shouldAutorotate];
}
-(NSUInteger)supportedInterfaceOrientations
{
return [self.topViewController supportedInterfaceOrientations];
}
- (UIInterfaceOrientation)preferredInterfaceOrientationForPresentation
{
return [self.topViewController preferredInterfaceOrientationForPresentation];
}
我真的认为正确的方法是将横向和纵向设置为支持的方向,并且不允许更改您不想旋转的 VC 上的方向,方法是在
- (BOOL)shouldAutorotateToInterfaceOrientation:(UIInterfaceOrientation)interfaceOrientation
如果不应该支持传递给该方法的方向。
正如评论中提到的,这种方法不能再使用了。你应该使用:
-(BOOL) shouldAutorotate
并找出此函数中的当前方向,如果您不想旋转,则返回 NO。
不要忘记让您的应用程序有不同的方向!
否则上面的任何东西都不会起作用
将其设置在部署信息部分下 General 的项目目标中: