【问题标题】:Applying a style to an iOS custom renderer in Xamarin.Forms在 Xamarin.Forms 中将样式应用于 iOS 自定义渲染器
【发布时间】:2016-12-31 07:23:02
【问题描述】:

我正在开发一个简单的 Xamarin.Forms 应用,并为 Android 和 UWP 创建了自定义条目渲染器。

我已经成功地将我自己的自定义样式应用到了 Entry 渲染器,如下所示:

  • 对于 UWP

    protected override void OnElementChanged(ElementChangedEventArgs<Entry> e)
    {
        base.OnElementChanged(e);
    
        var customControl = e.NewElement;
        var nativeControl = new FormsTextBox();
    
        var style = Windows.UI.Xaml.Application.Current.Resources["UserNameEntry"] as Windows.UI.Xaml.Style;
        nativeControl.Style = style;
        nativeControl.PlaceholderText = customControl.Placeholder;
        SetNativeControl(nativeControl);
    }
    
  • 适用于安卓

    protected override void OnElementChanged(ElementChangedEventArgs<Entry> e)
    {
        base.OnElementChanged(e);
        if (e.OldElement == null)
        {
            var nativeEditText = (global::Android.Widget.EditText)Control;
            nativeEditText.SetBackground(Resources.GetDrawable("@drawable/username"));
        }
    }
    

因此,使用 Android 和 UWP 平台的原生样式工具应用任何自定义样式非常简单。

我的问题是,有什么方法可以在 iOS 上做同样的事情吗?如何使用基于描述的文件应用样式,例如 UWP 中的 style.xaml 或 Android 中的 style.axml?

【问题讨论】:

    标签: xamarin xamarin.ios xamarin.android xamarin.forms


    【解决方案1】:

    你可以为IOS做这样的:

    protected override void OnElementChanged(ElementChangedEventArgs<Entry> e)
            {
                base.OnElementChanged(e);
    
                if (Control != null)
                {
                    Control.BorderStyle = UITextBorderStyle.None;
                    UIImage img = UIImage.FromFile("ImageName.png");
                    Control.Background = img;      
                }
            }
    

    【讨论】:

      猜你喜欢
      • 2017-02-20
      • 1970-01-01
      • 1970-01-01
      • 2016-05-31
      • 1970-01-01
      • 2017-01-07
      • 2015-03-29
      • 2016-10-24
      • 2014-08-29
      相关资源
      最近更新 更多