我有一个支持所有方向的iPhone应用程序但在一个UIViewController中我只想支持肖像(或颠倒)。
我已将以下代码添加到我的UIViewController中,但它仍然会旋转。
public override bool ShouldAutorotateToInterfaceOrientation (UIInterfaceOrientation toInterfaceOrientation)
{
// Return true for supported orientations
return ((toInterfaceOrientation != UIInterfaceOrientation.LandscapeLeft) && (toInterfaceOrientation != UIInterfaceOrientation.LandscapeRight));
}
无论我在哪里添加ShouldAutorotateToInterfaceOrientation代码,它仍然会旋转!
有没有办法让应用程序支持除一个以外的所有UIViewControllers的所有方向?
我也在使用NavigationController - 这会影响一些事情吗?
答案 0 :(得分:0)
如果您使用iOS 6,则必须覆盖GetSupportedInterfaceOrientations方法,而不是ShouldAutorotateToInterfaceOrientation
public override UIInterfaceOrientationMask GetSupportedInterfaceOrientations()
{ ... }
答案 1 :(得分:0)
可能发生这种情况是因为您的根导航控制器带来了自己的旋转。让我们假设你的根导航控制器是一个普通的UINavigationViewController。创建派生自己的版本:
public class UINavigationControllerWithoutRotation : UINavigationController
{
public UINavigationControllerWithoutRotation()
{
}
public UINavigationControllerWithoutRotation(UIViewController viewController) : base(viewController)
{
}
public override bool ShouldAutorotate()
{
return false;
}
}
现在使用它作为根控制器。找到类似的代码:
var myRootController = new UINavigationController();
并将其替换为
var myRootController = new UINavigationControllerWithoutRotation();
那应该做的工作。请记住,如果您的根视图控制器是UITabBarController,则必须执行稍微不同的操作!