xamarin.ios - MvvmCross - 适用于 Android 和 iOS 的弹出式导航、汉堡菜单、滑动菜单

标签 xamarin.ios xamarin.android xamarin mvvmcross

摘要

我希望有一个适用于 iOS 和 Android 的 MvvmCross 解决方案,它实现了用于导航的 FlyoutNavigation/汉堡菜单/滑动菜单。

示例代码

https://github.com/benhysell/V.FlyoutTest

问题

Android 项目没有问题,iOS 项目正在获取 View 并将框架大小加倍。我不确定是不是因为我使用 FlyoutNavigation 的方式iOS 上的组件,或者我正在做的事情 FlyoutNavigation在 MvvmCross 中。我在没有任何运气的情况下使用自定义 ViewPresenter。

问题详细描述

我见过几种为 MvvmCross 实现 FlyoutNavigation/汉堡菜单/滑动菜单的解决方案,但没有一个实现在统一的解决方案中同时处理 Android 和 iOS。每种方法都有自己的核心项目,然后他们对菜单数据、管理 View 等的位置有自己的想法。

因此,我着手创建一个统一的架构。

https://github.com/benhysell/V.FlyoutTest用于使用 iOS 和 Android 项目的单个解决方案的工作演示,这些项目都实现了 FlyoutNavigation/汉堡菜单/滑动菜单。

我找到并关注了 http://motzcod.es/post/60427389481/effective-navigation-in-xamarin-android-part-1 ,来源:https://github.com/jamesmontemagno/Xam.NavDrawer对于 Android 项目,效果很好。 Android 项目使用带有片段和交换的原生抽屉导航 Views进进出出很好。

在我使用这种架构的解决方案中,我有三个主要的 ViewModel s... HomeViewModel , EnterTimeViewModel , 和 CreateNewJobViewModel . HomeViewModel保存滑动菜单数据,另外两个提供用户将与之交互的 View 。在我的示例中,我正在创建一个小时输入应用程序,因此用户可以针对工作输入时间,或创建一个新工作。

使用我的 ViewModel在 iOS 中我决定使用 FlyoutNavigation组件,https://github.com/Clancey/FlyoutNavigation .我尝试使用 http://slodge.blogspot.com/2013/07/awesome-sliding-menus-from-big-frank.html 中描述的链接/项目,但没有成功地使用 Android 项目所依赖的已经建立的 .Core 项目来增强他们的实现。

我能够快速实现 FlyoutNavigation我的 HomeView 中的组件在 iOS 中,我以为我是自由而清晰的,但是 Views它们本身的大小是设备上应有的大小的 2 倍。在屏幕截图中,“输入时间”和“创建新工作”的标题应该居中,就像 MvvmCross 中的任何其他标题一样,但要靠右。查看“输入时间” View 、打开的菜单和“创建新作业” View 的三个屏幕截图。::我使用暂停按钮来制作一个快速而肮脏的“汉堡包”::

enter image description here
enter image description here
enter image description here

感觉就像我错过了一些简单的东西/我需要实现一个自定义 ViewPresenter适用于 iOS,但我尝试关注其他人并没有成功。关于我应该采取的方向/我应该尝试的事情的想法?

最佳答案

找到了! @Stuart 为我指明了正确的方向!

我并不宣称这是 Android 和 iOS 菜单最干净的解决方案……但这是一个开始。

为了解决调整大小的问题,我更改了设置 FlyoutNavigation 的位置View.FrameView.BoundsViewWillAppearHomeView .
public override void ViewWillAppear(bool animated) { base.ViewWillAppear(animated); navigation.View.Frame = UIScreen.MainScreen.Bounds; navigation.View.Bounds = UIScreen.MainScreen.Bounds; }
更新代码发布到github https://github.com/benhysell/V.FlyoutTest

关于xamarin.ios - MvvmCross - 适用于 Android 和 iOS 的弹出式导航、汉堡菜单、滑动菜单,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/22851261/

相关文章:

c# - Xamarin.iOS 未处理错误启动软调试器 :System. NotSupportedException

ios - 如何验证 iOS 消耗品应用内购买?

xamarin.android - MvxImageView,无法将 ImageUrl 绑定(bind)到本地资源

xamarin - 在自定义 xamarin 表单 Web View 中设置当前 url

c# - 我是否需要取消订阅 Click 事件以防止内存泄漏?

xamarin.ios - 将 JSON 对象转换为没有格式和缩进的字符串

c# - 在 Xamarin.iOS 上使用 ServiceStack.Client

c# - 如何在没有导航页面的情况下更改状态栏颜色

xaml - 如何在选项卡式页面之前添加内容页面或查看

c# - Xamarin - 如何从两个类中获取 ListView 源数据?