如何在不旋转设备的情况下更改Xamarin.Forms中视图的方向?

时间:2018-07-06 11:20:40

标签: xamarin xamarin.forms xamarin.ios

我需要在Xamarin.Forms中更改视图的方向而无需旋转设备,以便视图应像横向模式一样进行布局。

有什么办法可以实现?在Xamarin.Forms或Xamarin.iOS中?

1 个答案:

答案 0 :(得分:1)

对于 iOS 中的 Dependency Service ,请编写以下方法

public void ChangeLandscapeOrientation()
 {
     UIDevice.CurrentDevice.SetValueForKey(new NSNumber((int)UIInterfaceOrientation.LandscapeLeft), new NSString("orientation"));
     UINavigationController.AttemptRotationToDeviceOrientation();
 }

在需要时调用 ChangeLandscapeOrientation 方法。

AppDelegate.cs

public override UIInterfaceOrientationMask GetSupportedInterfaceOrientations(UIApplication application, UIWindow forWindow)
{

    var mainPage = Xamarin.Forms.Application.Current.MainPage;

    if (mainPage is YourPage || (mainPage is NavigationPage &&
                                   ((NavigationPage)mainPage).CurrentPage is YourPage) || (mainPage.Navigation != null &&
                                                                                             mainPage.Navigation.ModalStack.LastOrDefault() is YourPage))
    {
        return UIInterfaceOrientationMask.Landscape;
    }
    else
    {
        return UIInterfaceOrientationMask.Portrait;
    }
}

希望有帮助!