美文网首页程序员Xamarin 技術
关于 Xamarin 的那些事(四)-Xamarin Forms

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

作者: Ivanfy | 来源:发表于2017-02-17 12:15 被阅读0次

    最近有个新项目是开发一个 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>

    未完待续。。。

    相关文章

      网友评论

        本文标题:关于 Xamarin 的那些事(四)-Xamarin Forms

        本文链接:https://www.haomeiwen.com/subject/hdnkwttx.html