我的应用程序是基于导航的应用程序,它支持iOS 6.除了视图控制器外,所有其他应用程序仅支持纵向模式。特别是视图控制器必须同时支持横向和纵向方向。
我搜索了很多问题,但是没有一个答案适合我。如果有人知道,请指导我
我在Project中将方向设置为 Portait - >目标 - >摘要 - >支持的方向
答案 0 :(得分:6)
首先,如果要为iOS6制作应用程序,则应该使用UIViewController documentation中提供的iOS6方法。在iOS6中不推荐像shouldAutorotateToInterfaceOrientation
这样的方向方法,iOS6的替代方法是shouldAutoRotate
。如果您的应用也支持iOS5,则应该只使用旧方法。
第二个如果您在应用程序中使用UINavigationcontroller
并且需要具有不同的界面方向,那么navigationController可能会破坏应用程序中的界面方向。可能的解决方案(对我有用)是实现自定义UINavigationController
并覆盖该自定义UINavigationController
类中的界面方向方法,这将使您的viewControllers根据您设置的方向旋转,因为您的控制器被推送来自UINavigationController
。不要忘记在特定的viewController中添加这些方法。
<强> CustomNavigationController.h 强>
@interface CustomNavigationController : UINavigationController
@end
<强> CustomNavigationController.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];
}
答案 1 :(得分:0)
我真的认为这样做的正确方法是将横向和纵向设置为支持的方向,并且不允许通过返回NO来改变VC不想旋转的方向。 p>
- (BOOL)shouldAutorotateToInterfaceOrientation:(UIInterfaceOrientation)interfaceOrientation
如果不支持传递给方法的方向。
如评论中所述,此方法无法再使用。你应该使用:
-(BOOL) shouldAutorotate
找出此功能内的当前方向,如果不想旋转则返回NO。
答案 2 :(得分:0)
不要忘记允许您的应用程序使用不同的方向!
否则上面的任何内容都不起作用
在“部署信息”部分的“常规”项目目标中设置它: