故事板和单个UIViewController方向锁

时间:2013-01-29 12:07:58

标签: xcode xamarin.ios interface-builder storyboard monodevelop

我已经使用storyboard创建了我的应用程序,并且我已经设置了项目选项 - >支持的设备方向 - >所有方向(纵向,横向左,横向右,上下颠倒),因为我希望视图旋转为我的设备轮。观点被推动 NavigationController中的Interface Builder(带Segue方法)。

现在我有一个View Controller(TestViewController),它是故事板的一部分,我想锁定Orientation(只是Portrait)。我已经覆盖了那些方法,但TestViewController像其他方法一样旋转。如果未调用ShouldAutorotate,则会触发SupportedInterfaceOrientations,但结果与其他视图相同。

public partial class TestViewController : UIViewController {
...
    public override bool ShouldAutorotate()
    {
     return false;
    }

    public override UIInterfaceOrientationMask GetSupportedInterfaceOrientations()
    {
    return UIInterfaceOrientationMask.Portrait;

    }
...
}

环境

  • MonoTouch 6.06
  • Xcode 4.5.2
  • MonoDevelop 3.05

1 个答案:

答案 0 :(得分:1)

解决方案是在AppDelegate中设置支持的接口方向,如下所示

public override UIInterfaceOrientationMask GetSupportedInterfaceOrientations (UIApplication application, UIWindow forWindow)
        {
            if (forWindow != null && forWindow.RootViewController != null) {
                UINavigationController nav = forWindow.RootViewController as UINavigationController;
                if(nav.VisibleViewController is TestViewController){
                    return UIInterfaceOrientationMask.Portrait;
                }
            }
            return UIInterfaceOrientationMask.All;
        }