Работа с ориентацией устройства iOS Monotouch

Понадобилось сделать настройку для ориентации экрана. Возникает вопрос - нужна ли такая настройка в приложении. Ходят слухи, что ориентацию можно выбрать аппаратно. Я считаю, что такая настройка лишней не будет. Если обычная удобная ориентация устройства - ландшафтная, то книги я предпочитаю читать в портретной (поэтому в приложении для чтения книг установлена соответствующая настройка).

настройка ориентации экрана

Разработка

Первым шагом создаем свой UINavigationController.

public class MyNavigationController : UINavigationController
{
    public MyNavigationController()
    {
    }

    public override UIInterfaceOrientationMask GetSupportedInterfaceOrientations()
    {
        int orientation = UserSettings.GetInteger("AppOrientation");
        if (orientation == 0)
            return UIInterfaceOrientationMask.All;
        else if (orientation == 1)
            return UIInterfaceOrientationMask.PortraitUpsideDown | UIInterfaceOrientationMask.Portrait;

        return UIInterfaceOrientationMask.LandscapeLeft | UIInterfaceOrientationMask.LandscapeRight;
    }

    public override bool ShouldAutorotate()
    {
        return true;
    }
}

Где UserSettings класс, который работает с NSUserDefaults.StandardUserDefaults. Также, на экране (наследнике UIViewController) переопределен метод WillAnimateRotationInitElements вызывается для обновление представления экрана. 

/// <summary>
///   Occurs when the view controller will animate the interfacerotation.
/// </summary>
public override void WillAnimateRotation(UIInterfaceOrientation toInterfaceOrientation, double duration)
{

    base.WillAnimateRotation(toInterfaceOrientation, duration);
            
    InitElements();
}

 

 

Комментарии

comments powered by Disqus