UISlider 自定义轨道图像未正确设置

Posted

技术标签:

【中文标题】UISlider 自定义轨道图像未正确设置【英文标题】:UISlider custom track image not setting up properly 【发布时间】:2017-04-20 10:52:50 【问题描述】:

我创建了一个UISlider,它有不同的自定义图像用于最小和最大轨道。

这是UISlider的正常状态

但是当我滑动时,UISlider 第二张图片坏了。 设置不正确。

谁能告诉我这是怎么回事?

这是我的代码:

    slider = [[UISlider alloc] initWithFrame:CGRectMake(24, 24, [VTUIKit screenWidth] - 48, 10)];
    slider.tintColor = kVTColorTurquoise500;
    [slider setBackgroundColor:[UIColor clearColor]];
    numbers = @[@(0.5), @(1), @(2.5), @(5), @(10), @(25), @(50), @(100), @(200), @(500), @(999)];
    NSInteger numberOfSteps = ((float)[numbers count] - 1);
    
    slider.maximumValue = numberOfSteps;
    slider.minimumValue = 0;
    slider.continuous = YES;
    
    UIImage *stetchLeftTrack = [[UIImage imageNamed:@"Map-Range-Active"]
                                stretchableImageWithLeftCapWidth:5 topCapHeight:0.0];
    UIImage *stetchRightTrack = [[UIImage imageNamed:@"Map-Range"]
                                 stretchableImageWithLeftCapWidth:5 topCapHeight:0.0];
    [slider setMinimumTrackImage:stetchLeftTrack forState:UIControlStateNormal];
    [slider setMaximumTrackImage:stetchRightTrack forState:UIControlStateNormal];
    
    [slider addTarget:self action:@selector(sliderValueChanged:) forControlEvents:UIControlEventValueChanged];
    [self.bottomContainerView addSubview:slider];

任何帮助将不胜感激。 提前致谢。

【问题讨论】:

有谁能帮助我吗? 【参考方案1】:

好的,经过如此多的试验和错误并参考了如此多的答案,我得到了答案。 为了像我一样拥有类似的UISlider,我必须设置最小和最大跟踪图像如下

UIImage * stetchLeftTrack = [[UIImage imageNamed:@"leftImage"] resizableImageWithCapInsets:UIEdgeInsetsMake(0, 0, 0, 0)];
UIImage * stetchRightTrack = [[UIImage imageNamed:@"rightImage"] resizableImageWithCapInsets:UIEdgeInsetsMake(0, 0, 0, 0)];

但这里要注意的是,两个图像的大小(宽度)都必须与滑块完全相同。

所以,这就是我摆脱问题的方法。

【讨论】:

以上是关于UISlider 自定义轨道图像未正确设置的主要内容,如果未能解决你的问题,请参考以下文章

自定义 UISlider(跟踪图像高度)

自定义 UISlider 外观

自定义滑块轨道图像

在透明拇指图像后面隐藏 UISlider 轨道

具有居中 UISlider 和两个图像的自定义 UITableViewCell

自定义 UISlider(无需编写自定义代码)