如何获取UISlider滑块的位置

3

如何知道UISlider滑块的位置?
当我按下按钮时,我想在当前滑块的位置上添加一个标记。
我该如何获取当前滑块的位置以便添加标记?

这是我的同步代码:

 _positionSlider.value = _mediaplayer.position;

这是滑块条应该呈现的样子:

这是图片


我改善了问题的格式和清晰度,并包含了滑块的图像。 - zx485
2个回答

9
尝试这个方法: 首先创建一个UIImageView。
@interface ViewController ()
{
    UIImageView *imageView;
}

请在viewDiload()函数中编写以下代码:
imageView = [[UIImageView alloc]initWithFrame:CGRectMake(self.slider.frame.origin.x, self.slider.frame.origin.y-20, 20, 10)];
imageView.image = [UIImage imageNamed:@"navigateImage.png"];
[self.view addSubview:imageView];

[self.slider addTarget:self action:@selector(sliderValueChanged:) forControlEvents:UIControlEventValueChanged];

并且添加这个滑块事件函数。
-(void)sliderValueChanged:(UISlider *)slider{

    CGRect trackRect = [self.slider trackRectForBounds:self.slider.bounds];
    CGRect thumbRect = [self.slider thumbRectForBounds:self.slider.bounds
                                             trackRect:trackRect
                                                 value:self.slider.value];

    CGRect r = [imageView frame];
    r.origin.x = thumbRect.origin.x;
    [imageView setFrame:r];

    NSLog(@"%f",thumbRect.origin.x);
 }

6

Swift版本:

@objc func sliderChanged() {
    let trackRect = slider.trackRect(forBounds: slider.bounds)
    let thumbRect = slider.thumbRect(forBounds: slider.bounds, trackRect: trackRect, value: slider.value)

    arrowLeadingConstraint.update(offset: thumbRect.midX)
}

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接