阻止UIView进入景观

我在导航控制器内部有一个UIView,我试图阻止这个视图进入Landscape但是我试图使用的方法永远不会触发..代码低于任何帮助将非常感激..

- (BOOL)shouldAutorotateToInterfaceOrientation:(UIInterfaceOrientation)interfaceOrientation { if(interfaceOrientation == UIInterfaceOrientationLandscapeRight) { return NO; } else if(interfaceOrientation == UIInterfaceOrientationLandscapeLeft) { return NO; } return NO; } 

你应该设置return NO; 对于父导航控制器或UIViewController ,而不是UIView

此外,这与更少的代码一样工作:

iOS 5.x.

 - (BOOL)shouldAutorotateToInterfaceOrientation:(UIInterfaceOrientation)interfaceOrientation { return (interfaceOrientation == UIInterfaceOrientationPortrait); } 

iOS 6

从iOS 6开始, shouldAutorotateToInterfaceOrientation:已弃用。 如果视图控制器未覆盖supportedInterfaceOrientations方法,则UIKit将从应用程序委托或应用程序的Info.plist文件中获取默认轮换。

你需要使用:

 - (NSUInteger)supportedInterfaceOrientations NS_AVAILABLE_IOS(6_0); 

另一个选择是修改部署信息。

截图

此方法需要在UIViewController实例中实现,而不是UIView

此外,您实际上是为所有方向返回NO ,这是不正确的。 您需要为至少一个方向(最常见的是UIInterfaceOrientationPortrait )返回YES