Я создаю приложение monoTouch-iPad, и я спотыкаюсь из-за ориентации начального интерфейса.
Одна проблема заключается в том, что когда приложение запускается, UIDevice.CurrentDevice.Orientation
всегда возвращает Unknown
. Как вы можете решить, в какой ориентации запускается ваше приложение? Все свойства, которые я нашел на данный момент, просто возвращают портретный режим, неизвестный или размер кадра портретного режима - даже если это ландшафтный режим.
Я также создал два UIView (один для альбомной ориентации, другой для портретной ориентации) и уже изменил их в методе WillRotate
UIViewController. Но мой код:
if(toInterfaceOrientation==UIInterfaceOrientation.LandscapeLeft || toInterfaceOrientation==UIInterfaceOrientation.LandscapeRight){
_scrollView.RemoveFromSuperview();
this.View.Add (_scrollViewLandscape);
}else{
_scrollViewLandscape.RemoveFromSuperview();
this.View.Add (_scrollView);
}
выдаёт короткое и некрасивое "мерцание" при повороте экрана - по крайней мере в симуляторе.
Есть ли наилучшая практика для размещения ваших просмотров? И я знаю о ShouldAutorotateToInterfaceOrientation
, но это не работает для меня, так как я делаю много вещей, нарисованных владельцем, которые ломаются при автоматическом изменении размера (см. мой другой вопрос).
Я был бы очень признателен за решение без использования Interface-Builder, так как сейчас я делаю все в коде.
ОБНОВЛЕНИЕ: Краткое описание того, чего я хочу достичь: AppStart -> знание правильного размера кадра (1024 748 или 768 1004) -> Добавление собственного представления с правильным размером кадра
ОБНОВЛЕНИЕ 2: простой и простой фрагмент кода
public override void ViewDidLoad ()
{
base.ViewDidLoad ();
Console.WriteLine (this.InterfaceOrientation);
}
возвращает портрет. Даже если симулятор находится в ландшафтном режиме.