如何使用Xamarin.Forms.iOS在渲染器视图中更改UIPickerView文本颜色?

时间:2019-03-22 10:54:08

标签: c# xamarin.forms xamarin.ios uipickerview

我在ios渲染器文件中使用了UIPickerView,我试图更改视图的文本和背景颜色。使用 SetValueForKeyPath 覆盖方法来更改文本颜色。虽然选择器最初加载到视图中时,文本颜色没有更改,但是当我更改选定的索引时会更改(初始加载问题)。

protected override void OnElementChanged(ElementChangedEventArgs<CustomGrid> e)
{
   if (e.NewElement != null)
   {
      var nativeView = new UIPickerView();
      nativeView.Model = new PickerSource();
      nativeView.BackgroundColor = UIColor.Yellow;
      nativeView.SetValueForKeyPath(UIColor.Red, (NSString)"textColor");
      CGRect cGRect = new CGRect(0, 0, 100, 100);
      SetNativeControl(nativeView);
   }

   base.OnElementChanged(e);
}

1 个答案:

答案 0 :(得分:0)

我建议不要使用PickerRenderer来更改文本颜色,因为Xamarin.Forms.Platform.iOS.PickerRenderer非常复杂。实际上是一个UIToolbarUIBarButtonItem和一个UITextField组合成一个UIPickerView

The code for Xamarin.Forms.Platform.iOS.PickerRenderer is open-source,如果您想了解Xamarin.Forms团队如何在iOS上初始化Picker

Xamarin.Forms.Picker

在Xamarin.Forms中设置TextColor容易得多:

var picker = new Xamarin.Forms.Picker
{
    TextColor = Color.Red
};