如何从Xamarin Forms iOS中的自定义渲染器滑块中删除拇指?

时间:2018-12-04 17:11:02

标签: c# xamarin.forms xamarin.ios

所以我创建了一个自定义渲染器滑块,因为我想调整一下样式及其宽度。我可以使用宽度就可以了,但是当我尝试摆脱指头时,它不会被移除。

我同时尝试了Xamarin.Forms.Color.Transparent.ToUIColor()UIColor.Clear,但是拇指仍然存在。我打算只显示这些条,所以在我的xaml中将其设置为IsEnabled false。现在我只需要那个拇指图像就可以了:)

知道我在做什么错吗?

这是iOS代码渲染器:

public class Slider_iOS : SliderRenderer
{
    protected override void OnElementChanged(ElementChangedEventArgs<Slider> e)
    {

        SetNativeControl(new MySlideriOS());
        base.OnElementChanged(e);
    }
}

public class MySlideriOS : UISlider
{

    public MySlideriOS()
    {
        this.ThumbTintColor = UIColor.Clear;
        this.HorizontalAlignment = UIControlContentHorizontalAlignment.Fill;
        this.VerticalAlignment = UIControlContentVerticalAlignment.Fill;
    }

    public override CGRect TrackRectForBounds(CGRect forBounds)
    {
        CGRect rect = base.TrackRectForBounds(forBounds);
        return new CGRect(rect.X, rect.Y, rect.Width, 10);
    }
}

2 个答案:

答案 0 :(得分:1)

如果UIColor.Clear不起作用,则可以尝试设置一个透明图像,这应该可以解决问题

sliderImage.SetThumbImage(UIImage.FromFile("transparentIcon.png"), UIControlState.Normal);

答案 1 :(得分:0)

我已经运行了您的代码。我发现,初始化界面后,滑块的透明背景仍然存在,但他不会随幻灯片一起移动。

您可以尝试此操作,在此处添加Control.ThumbTintColor

public class Slider_iOS : SliderRenderer
{
    protected override void OnElementChanged(ElementChangedEventArgs<Slider> e)
    {
        base.OnElementChanged(e);
        Control.ThumbTintColor = UIColor.Clear; //add here
        SetNativeControl(new MySlideriOS());
    }
}