【问题标题】:Xamarin.Forms + Custom Renderers vs. Xamarin.iOS/Xamarin.AndroidXamarin.Forms + 自定义渲染器与 Xamarin.iOS/Xamarin.Android
【发布时间】:2017-01-07 06:49:01
【问题描述】:
我最近开始在一个项目中使用 Xamarin.Forms。就像文档中提到的那样,它非常适合原型设计。但是,我真的开始注意到 UI 设计共享概念的局限性。特别是,无法设置自定义按钮内容(例如图像)会更加严重。我敢肯定,在某些情况下我会想要更改控件的工作方式。
在我看来,我可以走两条路。一,继续使用 Xamarin.Forms 并使用自定义渲染器。考虑到我仍然希望共享我的 UI 代码,但也希望从基本的 Xamarin.Forms 控件自定义,我倾向于此选项。二、使用原生 Xamarin 项目(Xamarin.iOS、Xamarin.Android)。这将使我能够完全控制每个平台的 UI,但这也意味着需要维护更多代码。
正如我所提到的,我目前倾向于将自定义呈现器与 Xamarin.Forms 一起使用的选项。我可以从那些使用过一种或(最好)两种选择的人那里获得一些见解吗?
【问题讨论】:
标签:
xamarin.ios
xamarin.android
xamarin.forms
cross-platform
【解决方案1】:
我主要使用 Xamarin.Forms。对于正确类型的应用程序(嗯,类似于“表单”的应用程序),它运行良好。
编写自定义渲染器并不难,但不幸的是,文档并不是那么好。根据您所做的事情,有时在本机控件和表单布局引擎之间进行转换可能会有些棘手。但是,一旦您掌握了窍门,它就会变得有意义,而且现在代码是开源的,您可以窥探内部以了解“内置”控件是如何工作的。
有多种扩展可以添加更多控件。有些是免费和开源的,例如 XLabs.Forms。所以你需要的控件可能已经存在了。
您可以使用 TapGestureRecognizer 之类的机制将 Image 或 Label 转换为按钮,所以仅仅因为内置的 Forms Button 确实非常缺乏可定制性,您有时可以找到其他方法来获得相同的效果并且仍然留在纯 Xamarin.Forms 中。
希望有帮助!
【解决方案2】:
XamarinForms 适用于不需要大量使用设备特性的示例应用程序。
对于复杂的应用程序,我建议您从 Xamarin Ios 和 Android 开始。
负责需要更多时间,但您会发现它更加宽容