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

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

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

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

谁能帮我实现这个功能。

【问题讨论】:

    标签: ios objective-c ios7 uikit 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 类来实现此功能。
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多