淡色不适用于iOS的Xamarin Forms中的图像吗?

问题描述

我正在与this nuget包一起使用xamarin形式的内嵌图像色调颜色,在android上工作正常,但在iOS中工作不佳。 根据我的搜索,我对Alwaystemplate使用了渲染模式,但是在我的场景中,我无法使用渲染模式。 我正在做的是使用解决方文件中的图像引用,而不是iOS资产中的图像引用。

下面是我的代码段。

{{1}}

如果要在Xamarin表单中没有为iOS渲染图像的图像,我想更改TintColor。


解决方法

您可以编写Image的自定义渲染器以更改色调颜色和UIImageRenderingMode

在Xamarin.forms中:

public class myImage : Image
{

}

在iOS项目中:

[assembly: ExportRenderer(typeof(myImage),typeof(myImageRenderer))]
namespace WorkingWithImages.iOS
{
    public class myImageRenderer : ImageRenderer
    {
        protected override void OnElementChanged(ElementChangedEventArgs<Image> e)
        {
            base.OnElementChanged(e);

            Control.TintColor = UIColor.Red;

        }

        protected override void OnElementPropertyChanged(object sender,PropertyChangedEventArgs e)
        {
            base.OnElementPropertyChanged(sender,e);

            if (Control.Image != null)
            {
                UIImage image = Control.Image;

                image = image.ImageWithRenderingMode(UIImageRenderingMode.AlwaysTemplate);

                Control.Image = image;
            }
        }
    }
}