关于 Xamarin 的那些事(四)-Xamarin Forms

最近有个新项目是开发一个 iOS 应用,但由于我没有任何 iOS 的开发经验,学习 iOS 开发也要花很多时间,所以决定试试使用 Xamarin Forms (XF)来开发一个 iOS 应用,没想到效果出奇的好,因此打算来分享一下一些 XF 的开发经验。

XF 是一套跨平台的开发框架,只需要编写一次代码,包括界面代码,就能分别生成 Android、iOS、UWP 的原生应用。虽然各个平台生成出来的界面各有差异,但使用的是各平台的原生控件,使用体验也很不错。不过呢,也因为每个平台上的特性都是不一样的,因此 XF 也不可能支持所有平台的属性,这时候就需要编写 Renderer 来针对平台定义特性与效果。

比如说,XF 里的 TabbedPage,就是带分页的页面,那个分页栏在不同平台上的实现方法都是不一样的,在 iOS 使用的是 UITabBar,Android 使用的是 TabLayout,UWP 上的是 Pivot。UITabBar 支持设定分页选中时的颜色(TintColor),但 XF 中并没有提供相关的功能,因此需要自己编写 Renderer 来实现(也有其他方法实现,这里只针对 Renderer 说明)。


这是一个 iOS TabbedPage 的 Renderer 示例,简单说明一下如何实现自定义控件属性(虽然 XF 不支持某些属性,但 Xamarin.Android 和 Xamarin.iOS 是支持所有该平台上的控件属性的),我们只需要继承 XF 已经定义好的 TabbedRenderer,再针对 TabBar 属性修改,就可以基于原来的效果来自定义属性,其他的控件也可以用类似的方法来定义特定平台上的效果。
<pre>`
[assembly: ExportRenderer(typeof(TabbedPage), typeof(TabbedPageRenderer))]
namespace FormsDemo.iOS.Renderers {
public class TabbedPageRenderer : TabbedRenderer {
protected override void OnElementChanged(VisualElementChangedEventArgs e) {
base.OnElementChanged(e);

        TabBar.TintColor = UIColor.White;
        TabBar.UnselectedItemTintColor = UIColor.FromRGBA(255, 255, 255, 160);
    }
}

}
`</pre>

未完待续。。。

最后编辑于
©著作权归作者所有,转载或内容合作请联系作者
平台声明:文章内容(如有图片或视频亦包括在内)由作者上传并发布,文章内容仅代表作者本人观点,简书系信息发布平台,仅提供信息存储服务。

推荐阅读更多精彩内容

  • Android 自定义View的各种姿势1 Activity的显示之ViewRootImpl详解 Activity...
    passiontim阅读 173,523评论 25 708
  • 发现 关注 消息 iOS 第三方库、插件、知名博客总结 作者大灰狼的小绵羊哥哥关注 2017.06.26 09:4...
    肇东周阅读 12,252评论 4 61
  • 文/冰紫嫣 我独自穿越一整个沙漠,只为了寻找梦中那一枚干净的贝壳,在纷扰的人间像一只迷途的羔羊被你的爱牵引至...
    冰紫嫣原创阅读 450评论 0 4
  • 特别习惯的,每天打开Mac,写。 我想起一个上说,为什么我们会写日记,我想其实是因为我这一类人的大脑就喜欢倾诉,你...
    Zenith_Swimmer阅读 415评论 0 1