Я создаю приложение monoTouch-iPad и спотыкаюсь из-за ориентации start-interface.
Одна проблема заключается в том, что при запуске приложения UIDevice.CurrentDevice.Orientation
всегда возвращает Unknown
.Как вы можете решить, в каком направлении запускается ваше приложение?Все свойства, которые я сейчас нашел, просто возвращают портретный режим, неизвестный или размер кадра портретного режима - даже если это ландшафтный режим.
Я также создал два UIViews (один для пейзажа, один для портрета) иизменив их сейчас в 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) -> добавление моего пользовательского представления в правильном размере кадра
UPDATE2: простой и базовый фрагмент кода
public override void ViewDidLoad ()
{
base.ViewDidLoad ();
Console.WriteLine (this.InterfaceOrientation);
}
возвращает портрет.Даже если симулятор находится в ландшафтном режиме.