我有一个由很多视图控制器组成的应用程序......在项目摘要中,我将纵向方向设置为唯一受支持的设备方向。
然而,当转向侧面时,应用程序仍然会搞砸。
我的问题是,有没有办法通过app delegate或其他东西全局禁用自动旋转?
或者我是否必须进入所有视图控制器并添加“shouldAutorotateToInterfaceOrientation”方法?
只是不想错过将其添加到其中一个......
谢谢!
答案 0 :(得分:69)
在Info.plist中展开“支持的界面方向”并删除横向项目,使您的应用程序仅以纵向模式运行。
答案 1 :(得分:13)
现在info.plist
中有三种设备方向键。
第三个是我认为非通用应用程序,其余两个用于iPad和iPhone。
你应该试一试。
答案 2 :(得分:11)
在努力设置UIViewController的shouldAutorotate
和supportedInterfaceOrientation
方法后,在iOS6中没有成功,我发现最有效的方法是在app delegate中设置它。
- (NSUInteger)application:(UIApplication *)application supportedInterfaceOrientationsForWindow:(UIWindow *)window
{
return UIInterfaceOrientationMaskPortrait;
}
但是,返回UIInterfaceOrientationMaskPortraitUpsideDown
会导致我的应用崩溃。我不知道我做错了什么!
答案 3 :(得分:5)
在根视图控制器的方法中:
- (BOOL)shouldAutorotateToInterfaceOrientation:(UIInterfaceOrientation)interfaceOrientation
{
// Return YES for supported orientations
return (interfaceOrientation != UIInterfaceOrientationPortraitUpsideDown);
}
设置'return NO';
这应该适用于所有视图。
答案 4 :(得分:1)
如果你支持iPad,那么你不应该取消选中横向,因为它会阻止Apple在App Store上接受你的应用。
要在应用显示第一个屏幕之前阻止旋转,请将其放入AppDelegate.m
中此方法适用于上述iOS 7.1中的测试。
// G - fix for ipad.
- (NSUInteger)application:(UIApplication *)application supportedInterfaceOrientationsForWindow:(UIWindow *)window
{
return UIInterfaceOrientationMaskPortrait;
}
答案 5 :(得分:0)
以下是UIViewController标头中列出的方法:
// New Autorotation support.
- (BOOL)shouldAutorotate NS_AVAILABLE_IOS(6_0);
- (UIInterfaceOrientationMask)supportedInterfaceOrientations NS_AVAILABLE_IOS(6_0);
// Returns interface orientation masks.
- (UIInterfaceOrientation)preferredInterfaceOrientationForPresentation NS_AVAILABLE_IOS(6_0);
请注意,如果您在已经旋转的状态下启动应用程序,那么shouldAutoRotate似乎不起作用!