iOS 自定义slider点击移动和跳变

  1. 做项目的时候碰到的一个需求:需要Slider可以点击滑动并且Slider的滑块需要移动到固定的四个位置;
  2. 其效果可以参考网易新闻客户端的调整字体。

一、实现步骤
1.初始化UISlider

- (UISlider *) fontSlider {
    if (!_fontSlider) {
        _fontSlider = [[UISlider alloc] initWithFrame:CGRectMake(15,64, CGRectGetWidth(self.bounds) - 15 * 2, 44)];
        _fontSlider.minimumValue = 0;
        _fontSlider.maximumValue = 3;
        _fontSlider.backgroundColor = [UIColor clearColor];
        [_fontSlider setThumbImage:[UIImage imageNamed:"thumb.png"] forState:UIControlStateNormal];
        _fontSlider.minimumTrackTintColor = [UIColor clearColor];
        _fontSlider.maximumTrackTintColor = [UIColor clearColor];
        [_fontSlider setValue:0 animated:YES];
        //添加滑动事件
        [_fontSlider addTarget:self
                        action:@selector(fontSliderValueChanged:)
              forControlEvents:UIControlEventValueChanged];
        //添加点击手势
        [_fontSlider addGestureRecognizer:[[UITapGestureRecognizer alloc] initWithTarget:self action:@selector(fontSliderTapped:)]];
    }
    return _fontSlider;
}

2.事件和手势

- (void) fontSliderValueChanged:(id)sender {
    UISlider *slider = sender;
    //将slider的value+0.5然后取整(向下取整),那么index只能是0,1,2和3这四个数字了,所以slider只能在这四个位置上跳动
    NSUInteger index = (NSUInteger)(slider.value + 0.5); 
    [self.fontSlider setValue:sliderValue animated:YES];
}

- (void) fontSliderTapped:(UITapGestureRecognizer *)tapGesture {
    CGPoint touchPoint = [tapGesture locationInView:self.fontSlider];
    CGFloat value = (self.fontSlider.maximumValue - self.fontSlider.minimumValue) * (touchPoint.x / self.fontSlider.frame.size.width );
    NSUInteger index = (NSUInteger)(value + 0.5); 
    [self.fontSlider setValue:sliderValue animated:YES];
}
最后编辑于
©著作权归作者所有,转载或内容合作请联系作者
【社区内容提示】社区部分内容疑似由AI辅助生成,浏览时请结合常识与多方信息审慎甄别。
平台声明:文章内容(如有图片或视频亦包括在内)由作者上传并发布,文章内容仅代表作者本人观点,简书系信息发布平台,仅提供信息存储服务。

相关阅读更多精彩内容

  • Android 自定义View的各种姿势1 Activity的显示之ViewRootImpl详解 Activity...
    passiontim阅读 176,473评论 25 709
  • 代码创建UIWindow对象 Xcode7之后使用代码创建UIWindow对象: //创建UIWindow对象 s...
    云之君兮鹏阅读 5,235评论 0 2
  • 做一个听众,沉默且思考。请听进去貌似繁琐无用的絮絮叨叨。 母上今晚的絮絮叨叨是:做皮鞋一直敲小榔头,整个右边都瘀血...
    Wisconsin0607阅读 1,855评论 0 0
  • 状态好差,躺在被窝里刷微博,看到了关于异地恋。又到知乎上搜,就忍不住想流眼泪。 不知道是第六感还是胡思乱想,总是会...
    晚安_明天见阅读 1,274评论 0 0
  • 很久没有写过什么东西提起笔,想写写什么,却什么都已经写不下。 那种执笔狂书的感觉,已经不知何时变成了十指在键盘上跳...
    陌小念阅读 1,706评论 0 0

友情链接更多精彩内容