自定义开关在Xamarin窗体中不显示开/关图像

自定义开关在Xamarin窗体中不显示开/关图像,xamarin,xamarin.forms,xamarin.ios,Xamarin,Xamarin.forms,Xamarin.ios,当我按照上面的指南制作自定义渲染器时,“OnImage”和“OffImage”不起作用。我在单击“开”或“关”时看不到图像 在我的类中,我发送一个HTTP url,然后将该url转换为UIImage。它成功地工作了,因为我一直在添加断点。我甚至试着用我图书馆里的一张图片来看看这是否会改变结果,但没有 public class Switch_iOS : SwitchRenderer { Version version = new Version(ObjCRuntime.Constants.

当我按照上面的指南制作自定义渲染器时,“OnImage”和“OffImage”不起作用。我在单击“开”或“关”时看不到图像

在我的类中,我发送一个HTTP url,然后将该url转换为UIImage。它成功地工作了,因为我一直在添加断点。我甚至试着用我图书馆里的一张图片来看看这是否会改变结果,但没有

public class Switch_iOS : SwitchRenderer
{
    Version version = new Version(ObjCRuntime.Constants.Version);
    protected override void OnElementChanged(ElementChangedEventArgs<Switch> e)
    {
        base.OnElementChanged(e);
        if (e.OldElement != null || e.NewElement == null)
            return;
        var view = (CustomSwitch)Element;
        if (!string.IsNullOrEmpty(view.SwitchThumbImage))
        {
            if (version > new Version(6, 0))
            {   
                Control.OnImage = FromUrl(view.SwitchThumbImage);

                Control.OffImage = FromUrl(view.SwitchThumbImage);
            }
            else
            {
                Control.ThumbTintColor = view.SwitchThumbColor.ToUIColor();
            }
        }
    }

    public UIImage FromUrl(string uri)
    {
        using (var url = new NSUrl(uri))
        using (var data = NSData.FromUrl(url))
            return UIImage.LoadFromData(data);
    }
}
public-class-Switch\u-iOS:SwitchRenderer
{
版本版本=新版本(ObjCRuntime.Constants.Version);
受保护的覆盖无效OnElementChanged(ElementChangedEventArgs e)
{
基础。一个要素发生变化(e);
if(e.OldElement!=null | | e.NewElement==null)
返回;
var视图=(CustomSwitch)元素;
如果(!string.IsNullOrEmpty(view.SwitchThumbImage))
{
如果(版本>新版本(6,0))
{   
Control.OnImage=FromUrl(view.SwitchThumbImage);
Control.OffImage=FromUrl(view.SwitchThumbImage);
}
其他的
{
Control.ThumbTintColor=view.SwitchThumbColor.ToUIColor();
}
}
}
公共UIImage FromUrl(字符串uri)
{
使用(var url=new NSUrl(uri))
使用(var data=NSData.FromUrl(url))
返回UIImage.LoadFromData(数据);
}
}

“Control.OnImage”和“Control.officemage”是否不适用于最新的Xamarin表单?我还打算为交换机制作背景图像。

不幸的是,iOS 7中关于
OnImage
ofimage
UISwitch无效

看看:

在iOS 7及更高版本中,此属性无效

在iOS 6中,此图像表示交换机的内部内容。 指定的图像将与开关的圆形挡板合成 和拇指来创建最终外观

相反,你可以使用

  • onTintColor
    设置开关打开时的色调颜色
  • tintColor
    设置开关关闭时的色调
  • thumbTintColor
    设置拇指的着色颜色

“似乎不起作用”不是对问题的有用描述。你是说两个图像都不显示吗?还是只有一个人会?还是别的什么?不起作用。。我将重新措辞这个问题。哎哟,好吧,那么不可能添加图像了吗(你知道xamarin表单中的任何工作吗?试着这样做:@DiddanDo是的。据我所知,除非自定义视图以实现
UISwitch
的所有功能,否则图像不能添加到
UISwitch
。好吧。你知道有任何github repo在xamarin中进行了自定义吗?@DiddanDo the
Syncfusion.xamarin.Core
nuget软件包可以通过使用
SfSwitch
实现这一点。请参阅yea,这正是我所需要的。但是synflusion非常昂贵