我没有收到任何关于如何在滑块位于拇指图像后面时隐藏滑块轨道的建议,因此我发布了我的解决方案,以防其他人遇到此问题。如果有人有更好的方法,请告诉我。
为了有一个透明的拇指图像并且不让轨道连接在它的中心,我必须将滑块轨道图像设置为空白图像并设置我自己的滑块轨道图像,每次滑块的值发生变化。我不仅要更改自定义滑块轨道的宽度,而且每次调整图像大小时都必须更新图像的 X 位置,以便它与滑块轨道的最终图像连接。
在我的例子中,我有一个设置为 0 的滑块,它的最大值设置为滑块的宽度。我的自定义滑块轨道只会出现在拇指图像的右侧。因此,当您将拇指图像向右滑动时,条形会缩小,而左侧则清晰。
首先我设置我的滑块拇指图像并将滑块轨道设置为空白图像。
- (void)viewDidLoad {
[super viewDidLoad];
UIImage *thumbImage =[UIImage imageNamed:@"answerSlider.png"];
[_slider setMinimumTrackImage:[UIImage new] forState:UIControlStateNormal];
[_slider setMaximumTrackImage:[UIImage new] forState:UIControlStateNormal];
[_slider setThumbImage:thumbImage forState:UIControlStateNormal];
thumbImage = nil;
_slider.value = 0;
}
在 ViewWillApear 中,我有一个调用来设置我将创建的自定义 SLider 轨道。
- (void)viewDidAppear:(BOOL)animated{
[self updateSlideBarLength];
}
在updateSLideBarLength里面我用slider的值来帮助确定我的slider track Image的宽度。
- (void)updateSlideBarLength{
// Get Position Of Slider
CGFloat sliderValue = _slider.value;
CGFloat thumbImageWidth = 58; // this is the width of my thumb image
CGFloat sliderControlWidth = 288.0f; // This is a constant number in my case
CGFloat sliderWidth = sliderControlWidth - thumbImageWidth - sliderValue;
CGFloat sliderBarHeight = 2.0f;
// Reset Width Of aFrame
CGFloat sliderEndY = _sliderEnd.frame.origin.y;
CGFloat sliderEndX = _sliderEnd.frame.origin.x;
CGFloat sliderBarY = sliderEndY + (_sliderEnd.frame.size.height / 2 - 1);
CGFloat sliderBarX = sliderEndX - sliderWidth + (_sliderEnd.frame.size.width/2);
CGRect aframe = CGRectMake(sliderBarX, sliderBarY, sliderWidth, sliderBarHeight);
if (_sliderBar == nil) {
NSLog(@"Slider Bar Doesnt Exist");
_sliderBar = [[UIImageView alloc] initWithFrame:aframe];
_sliderBar.image = [UIImage imageNamed:@"sliderBar.png"];
[self.view addSubview:_sliderBar];
[self.view bringSubviewToFront:_sliderBar];
}
_sliderBar.frame = aframe;
}
最后,我确保每次滑块值更改时都会调用 updateSliderBarLength。
- (IBAction)sliderMoved:(id)sender {
[self updateSlideBarLength];
}
虽然我必须调整滑块的最大值以便我创建的自定义滑块轨道图像始终与拇指图像的边缘对齐,但这仍然有效。随着值的增加滑动拇指图像,滑块轨道开始侵犯我的拇指图像。通过增加滑块值,我能够阻止这种情况发生。同样,我不相信这是最好的方法,但它对我有用。稍后当我有更多代表并且可以发布图片时,我将编辑此帖子以帮助每个人可视化我所描述的内容。