使用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进行滑动并且有触感反馈了