如何获取 UISlider 拇指位置

Posted

技术标签:

【中文标题】如何获取 UISlider 拇指位置【英文标题】:How to get UISlider thumb position 【发布时间】:2018-01-04 10:11:35 【问题描述】:

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

这是我的同步代码:

 _positionSlider.value = _mediaplayer.position;

滑块应该是这样的:

【问题讨论】:

我改进了问题的格式和清晰度,并包含了滑块的图像。 【参考方案1】:

试试这个, 首先创建 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);
 

【讨论】:

【参考方案2】:

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)

【讨论】:

以上是关于如何获取 UISlider 拇指位置的主要内容,如果未能解决你的问题,请参考以下文章

在 UIslider 轨道上获取事件

如何移除 UISlider 的预填充

自定义 UISlider 拇指图标:如何阻止拇指图标在拖动时恢复为默认圆形图标?

如何获取给定值沿 UISlider 的位置?

如何读取 UISlider 拇指图像的大小

查找时如何更改 UISlider 拇指的大小