是否有(一半)通用方法来处理Xamarin Forms中针对不同视图和平台(Android,iOS,WinPhone)的旋转/方向?
UI确实旋转,这很好,虽然它对我的布局造成了严重破坏(现在是绝对布局) . 我认为使用Stacklayout我可以使它变得更灵活,但是当布局更复杂时,它会在其他地方撞到路障 .
我能以某种方式使用相同的ViewModel显示纵向和横向的不同视图吗? (我使用的是基于XLAB的MVVM . )
我发现可能的解决方案:
http://blog.rthand.com/post/2014/07/24/Different-XAML-layouts-for-different-device-orienations-in-XamarinForms.aspx缺少iOS,我想知道它是否能很好地处理MVVM,看起来很好但我现在正在调查它
http://www.jimbobbennett.io/orientation-with-xamarin-forms/听起来很有希望,但样本只是iOS,链接的GIT存储库根本没有文档,它只是说"Xamarin Helpers"
http://www.sellsbrothers.com/posts/Details/13740也可能是以编程方式创建的视图 . 虽然在我的测试中我没有在旋转时获得ios模拟器的大小改变事件(尽管我在不同的代码处听过) . (解决方案基于更改的大小以检测旋转 . )
1 回答
如果您已经在使用XLabs,那么您可以使用IXFormsApp和属性“Orientation”和事件处理程序“Rotation” . 您必须为每个平台添加本机观察器并在那里设置IXFormsApp的“Orientation”,这将导致事件处理程序调用 .
例如在iOS上:
现在,您可以通过解析IXFormsApp来监控方向更改:
至于布局,我认为RelativeLayout是最方便的选择,因为你可以将方向放在Constraint中 . 在旋转时,布局会自行刷新 .