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

如何在不旋转设备的情况下更改Xamarin.Forms中的视图方向?,xamarin,xamarin.forms,xamarin.ios,Xamarin,Xamarin.forms,Xamarin.ios,我需要在不旋转设备的情况下更改Xamarin.Forms中视图的方向,以便视图的布局与横向模式中的布局相同 有什么办法可以实现吗?使用Xamarin.Forms或Xamarin.iOS?对于依赖项服务中的iOS,请编写以下方法 public void ChangeLandscapeOrientation() { UIDevice.CurrentDevice.SetValueForKey(new NSNumber((int)UIInterfaceOrientation.Landscap

我需要在不旋转设备的情况下更改Xamarin.Forms中视图的方向,以便视图的布局与横向模式中的布局相同


有什么办法可以实现吗?使用Xamarin.Forms或Xamarin.iOS?

对于依赖项服务中的iOS,请编写以下方法

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;
    }
}

希望有帮助

此代码在模拟器中工作,但在设备中不工作。有什么想法吗?@Divakar我也添加了用AppDelegate编写的代码。试试看!在应用程序加载和手动更改方向时,该覆盖甚至都未命中。您的意思是断点,对吗?是的,我已经将断点放在那里并进行了检查。未调用覆盖。@Divakar它是一个默认的覆盖方法,即使不定向设备或模拟器也会被调用。你能检查一下你的info.plist支持的界面方向吗。