如何解决如何在 Xamarin.forms 中手动和自动旋转屏幕
我需要将屏幕从纵向旋转到横向。那么即使我没有倾斜我的手机,我也应该留在横向。纵向和横向具有不同的视图,带有用于更改方向的按钮,并且位于我使用内容模板处理的相同内容页面中。所以,现在我想在倾斜手机或点击任一视图中的按钮来改变方向时自动旋转。
- 纵向 -> 使用按钮更改横向然后我应该保持横向视图直到发生旋转。
- 例如:- 现在,我使用传感器进入横向模式,如果我点击旋转按钮,我将处于横向模式,那么我应该更改纵向并保持在那里。
我想同时满足这两种情况。如何在 Android 和 iOS (Xamarin.Forms) 中实现这一点?
如果您有解决方案,任何人都会遇到这种用例。帮帮我。
解决方法
使用 Xamarin.Forms 时,支持的控制设备方向的方法是使用每个单独项目的设置。
您可以在依赖服务中调用以下方法。
创建接口:
public interface IOrientationService
{
void Landscape();
void Portrait();
}
安卓:
public class OrientationService : IOrientationService
{
public void Landscape()
{
((Activity)Forms.Context).RequestedOrientation = ScreenOrientation.Landscape;
}
public void Portrait()
{
((Activity)Forms.Context).RequestedOrientation = ScreenOrientation.Portrait;
}
}
iOS:
public class OrientationService : IOrientationService
{
public void Landscape()
{
AppDelegate appDelegate = (AppDelegate)UIApplication.SharedApplication.Delegate;
appDelegate.allowRotation = true;
UIDevice.CurrentDevice.SetValueForKey(new NSNumber((int)UIInterfaceOrientation.LandscapeLeft),new NSString("orientation"));
}
public void Portrait()
{
AppDelegate appDelegate = (AppDelegate)UIApplication.SharedApplication.Delegate;
appDelegate.allowRotation = true;
UIDevice.CurrentDevice.SetValueForKey(new NSNumber((int)UIInterfaceOrientation.Portrait),new NSString("orientation"));
}
}
依赖服务的使用可以参考下面的链接。 How can I block rotation to only allow portrait mode in xamarin forms?
- 我只想自动和手动旋转应用中的一页。
当您进行导航时,您可以在 OnAppearing
事件中加载页面之前进行定位。
protected override void OnAppearing()
{
base.OnAppearing();
DependencyService.Get<IOrientationService>().Landscape();
}
- 纵向和横向视图都不同。
例如 1.,您可以使用 OnAppearing()
事件在每个页面中设置您想要的方向。
- 我不应该在任何情况下锁定特定页面,但是当我想手动更改方向时,我应该能够做到这一点。即使我没有旋转/倾斜手机。
如果您想手动执行此操作,请在点击事件或点击或其他操作中调用 Landscape
或 Portrait
。
版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。