UISlider 具有不均匀的步骤。

Posted

技术标签:

【中文标题】UISlider 具有不均匀的步骤。【英文标题】:UISlider with uneven steps. 【发布时间】:2014-03-18 10:07:06 【问题描述】:

我需要实现一个滑块控件,如下图

滑块的步长不均匀。 每当用户滑动滑块时,滑块只会停在接近当前范围的一步。

但真正的挑战是 UISlider 在最初提供的自定义点(范围)处带有点。

谁能帮我实现这个功能。

【问题讨论】:

【参考方案1】:

我认为您最好不要尝试将UISlider 混入此配置中

如果这是我的问题,我会构建一个这样的自定义视图

 DKCustomSliderView
 -> UIImageView (subview for slider head)

它实现了这样的接口。

@interface DKCustomSliderView : UIView

-(void)setStopPoints:(NSArray *)stopPoints; //array of NSNumbers between 0-1 which define indents
-(void)setSliderHeadImage:(UIImage *)sliderHeadImage; //image to use as slider head
-(void)setIndentImage:(UIImage *)indentImage; //image to use as indent marker
-(void)setTrackImage:(UIImage *)trackImage; //stretchy image to use on track 

@end

我会在滑块图像视图上跟踪平移手势。

-(void)handlePanGesture:(UIPanGestureRecogniser *)pgr 

if(pgr.state == UIGestureRecogniserStateChanged)  

   //am i near an indent? , if so lock me here and be slightly sticky.



DKCustomSliderView 的绘制矩形看起来有点像这样。

-(void)drawRect:(CGRect)dirtyRect 

CGRect bounds = self.bounds;

// 1. draw track across width

for(NSNumber *marker in self.stopPoints) 

//draw a instance of self.indentImage at ([marker floatValue]/bounds.size.width)




【讨论】:

感谢您的回复。我已经离开了使用 UISlider 的方法,目前正在通过继承 UIControl 类来实现此功能。

以上是关于UISlider 具有不均匀的步骤。的主要内容,如果未能解决你的问题,请参考以下文章

实施步骤/捕捉 UISlider

如何获得 UISlider 的默认 maximumTrackTintColor

我如何制作具有步长值的 UISlider [关闭]

具有缓冲进度的 UISlider - AVPlayer

具有单条颜色的 UISlider

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