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

时间:2017-04-20 10:52:50

标签: ios objective-c uislider uicontrol

我创建了一个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 个答案:

答案 0 :(得分:0)

好了经过这么多的试验和错误,并提到了很多答案,我得到了答案。 为了得到类似我的UISlider,我必须设置最小和最大的跟踪图像,如下所示

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

但问题是,这两个图像必须与滑块完全相同(宽度)。

所以,这就是我如何摆脱我的问题。