UISlider设置触感反馈

使用UISlider控件时,有时需要设置触感反馈

需要在初始化的地方添加事件

[_slider addTarget:self action:@selector(sliderChanged:) forControlEvents:UIControlEventValueChanged];

实现方法

- (void)sliderChanged:(UISlider *)slider

{

    // 临时变量初始值

    static NSIntegerlastValue = 0;



    // 计算要设置的value

    NSIntegervalue = (NSInteger)slider.value % 1 == 0 ? slider.value : ((NSInteger)slider.value % 1 > 0.5 ? (((NSInteger)slider.value / 1) * 1 + 1) : ((NSInteger)slider.value / 1) * 1);



    // 设置slider

    [self.slider setValue:value animated:YES];



    // 判断是否相等

    if (lastValue != value) {

        // 设置触感反馈

        if (@available(iOS10.0, *)) {

            UIImpactFeedbackGenerator *feedBackGenertor = [[UIImpactFeedbackGenerator alloc] initWithStyle:UIImpactFeedbackStyleLight];

            [feedBackGenertor prepare];

            [feedBackGenertor impactOccurred];

        }



        // 赋值

        lastValue = value;

    }

}

就可以按照步进值1进行滑动并且有触感反馈了

你可能感兴趣的:(UISlider设置触感反馈)