iPad Landscape неправильно изменяет размеры SubViews - PullRequest
1 голос
/ 07 февраля 2011

Я пишу приложение для iPad, используя MonoTouch, MonoDevelop и Interface Builder, и наткнулся на проблему, которую, похоже, не могу решить.Это наверное что-то простое.То, что я пытаюсь сделать, - это принудительно запустить приложение в Landscapemode.Приложение запускается в альбомной ориентации, но неправильно изменяет размер подпредставлений.

В основном то, что я делаю в своем приложении appdelegate, - это то, что я добавляю SubView с именем IndexViewController.xib в Window.В IndexViewController у меня есть представление с меткой на нем, если я затем в IndexViewController переопределю ShouldAutorotateToInterfaceOrientation, чтобы вернуть это: он работает правильно.

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

Однако теперь я пытаюсь создать NavigationController и добавить его в представление IndexController.xib при Initialize:

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

Он вращается правильно, но не заполняетЦелое «окно» я выложил скриншот и пример решения.И мой info.plist установлен для разрешения «UIInterfaceOrientationLandscapeLeft» и «UIInterfaceOrientationLandscapeLeftRight» как UISupportedInterfaceOrientations

Снимок экрана

1019 * Пример решения здесь

Возможно, есть что-то очень простое, чего мне не хватает, но я не могу понять.

1 Ответ

2 голосов
/ 07 февраля 2011

Я бы сказал, что это может быть связано с тем, что способ построения иерархии приложения не является предложенным способом сделать это.Хотя вы могли бы продолжать в том же духе, в будущем у вас будет больше проблем.В идеале вы хотите добавить NavigationController View the window вместо того, чтобы иметь NavigationController, содержащийся в UIViewController.

В делегате приложения я хотел бы сделать что-то вроде:

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

Это добавит представление окна контроллера навигации в окно, где RootViewController из NavigationController будет вашим IndexViewController

Вы также должны удалить UINavigationController, который добавлен к вашему IndexViewController в Initialise().

Я только что скачал ваш пример решения и попробовал это очень быстро, и он загрузил приложение в альбомной ориентации с видом, полностью заполняющим экран.Он не вращался автоматически, но это, безусловно, будет хорошей отправной точкой для вас:)

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...