iPad Landscape未正确调整SubView的大小

时间:2011-02-07 08:56:45

标签: ipad xamarin.ios

我正在使用MonoTouch,MonoDevelop和Interface Builder编写iPad应用程序,我偶然发现了一个我似乎无法解决的问题。这可能很简单。我想要做的是从一开始就强制应用到Landscapemode。应用程序在Landscape中启动,但不会正确调整子视图的大小。

基本上我在我的appdelegate中做的是我向Window添加一个名为IndexViewController.xib的SubView。在IndexViewController中我有一个带有标签的View,如果我在IndexViewController中覆盖ShouldAutorotateToInterfaceOrientation以返回它:它可以正常工作。

public override bool ShouldAutorotateToInterfaceOrientation (UIInterfaceOrientation toInterfaceOrientation)
{
            return ((toInterfaceOrientation == UIInterfaceOrientation.LandscapeLeft) || (toInterfaceOrientation == UIInterfaceOrientation.LandscapeRight));
}

但是,我现在尝试创建一个NavigationController并将其添加到Initialize上的IndexController.xib-view:

    void Initialize ()
    {
        this.View.AddSubview (NavController.View);
    }

它正确旋转但没有填满整个“窗口”,我发布了截图和示例解决方案。我的 info.plist 设置为允许“UIInterfaceOrientationLandscapeLeft”和“UIInterfaceOrientationLandscapeLeftRight”为 UISupportedInterfaceOrientations

Screenshot

Sample solution here

我可能遗漏了一些简单易懂的东西,但我无法弄明白。

1 个答案:

答案 0 :(得分:2)

我想这可能是因为您构建应用程序层次结构的方式不是建议的方式。虽然你可以继续这种方式,但你将在未来遇到更多问题。 理想情况下,您希望添加NavigationController的View the window,而不是将NavigationController包含在UIViewController中。

在app委托中,我会按照以下方式执行操作:

IndexViewController indexVC = new IndexViewController()
UINavigationController navController = new UINavigationController(indexVC);
window.AddSubview(navController.View);

这会将导航控件的视图添加到窗口,RootViewController的{​​{1}}为NavigationController

您还应该删除IndexViewController中添加到IndexViewController的UINavigationController

我刚刚下载了您的示例解决方案,并且非常快速地尝试了这个解决方案,它将应用程序加载到Landscape中,视图完全填满了屏幕。它没有自动旋转,但这对你来说肯定是一个很好的起点:)