// // TFSliderView.m // TFReader // // Created by 谢腾飞 on 2020/12/25. // Copyright © 2020 xtfei_2011@126.com. All rights reserved. // #import "TFSliderView.h" #import #define point_Height 4 #define ThumbImage_Height 20 @interface TFSliderView () @property (nonatomic ,strong) TTRangeSlider *rangeSlider; @property (nonatomic ,assign) NSUInteger cutPointCout; @property (nonatomic ,strong) UIImageView *leftIconView; @property (nonatomic ,strong) UIImageView *rightIconView; @end @implementation TFSliderView - (instancetype)initWithFrame:(CGRect)frame sliderCutPointCount:(NSUInteger)cutPointCount { if (self = [super initWithFrame:frame]) { self.cutPointCout = cutPointCount; [self createSubViews]; } return self; } - (void)createSubViews { self.leftIconView = [[UIImageView alloc] initWithFrame:CGRectMake(0, 0, self.bounds.size.height, self.bounds.size.height)]; self.leftIconView.bounds = CGRectMake(0, 0, CGRectGetWidth(self.leftIconView.frame) + 5, CGRectGetHeight(self.leftIconView.frame) + 5); [self addSubview:self.leftIconView]; self.rangeSlider = [[TTRangeSlider alloc] initWithFrame:CGRectMake(0, 0, self.bounds.size.width - 2 * self.bounds.size.height, 10)]; self.rangeSlider.center = CGPointMake(self.bounds.size.width / 2, self.bounds.size.height / 2); self.rangeSlider.handleImage = [UIImage imageNamed:@"book_menu_slider_icon"]; self.rangeSlider.minValue = CGFLOAT_MIN; self.rangeSlider.maxValue = self.cutPointCout <= 0 ? 10 : self.cutPointCout; self.rangeSlider.selectedMinimum = CGFLOAT_MIN; self.rangeSlider.selectedMaximum = self.cutPointCout <= 0 ? 10 : self.cutPointCout; self.rangeSlider.hideLabels = YES; self.rangeSlider.disableRange = YES; self.rangeSlider.enableStep = NO; self.rangeSlider.step = 1; self.rangeSlider.handleDiameter = 20; self.rangeSlider.lineHeight = 5; self.rangeSlider.selectedHandleDiameterMultiplier = 1.2; self.rangeSlider.lineBackGroundColor = kGrayLineColor; self.rangeSlider.tintColorBetweenHandles = kMainColor; [self.rangeSlider addTarget:self action:@selector(sliderEndChanged:) forControlEvents:UIControlEventValueChanged]; [self addSubview:self.rangeSlider]; self.rightIconView = [[UIImageView alloc] initWithFrame:CGRectMake(self.bounds.size.width - self.bounds.size.height, 0, self.bounds.size.height, self.bounds.size.height)]; [self addSubview:self.rightIconView]; } - (void)sliderEndChanged:(TTRangeSlider *)sender { if ([self.delegate respondsToSelector:@selector(sliderValueEndChanged:slider:)]) { [self.delegate sliderValueEndChanged:_invertedValue ? fabs(sender.selectedMaximum - self.cutPointCout):sender.selectedMaximum slider:self]; } } - (void)slider:(UISlider *)sender { sender.value = (int)roundf(sender.value); } - (void)setStepSlider:(BOOL)stepSlider { if (stepSlider) { self.rangeSlider.tintColorBetweenHandles = [UIColor clearColor]; self.rangeSlider.lineBackGroundColor = [UIColor clearColor]; self.rangeSlider.enableStep = YES; NSUInteger buttonNum = self.cutPointCout + 1; // 每行多少按钮 CGFloat button_W = point_Height; // 按钮宽 CGFloat button_H = point_Height; // 按钮高 CGFloat margin_X = ThumbImage_Height / 2; // 第一个按钮的X坐标 CGFloat margin_Y = (self.rangeSlider.height - point_Height) / 2; // 第一个按钮的Y坐标 CGFloat space_X = (self.rangeSlider.width - (3 * margin_X) - point_Height * (self.cutPointCout + 1)) / self.cutPointCout; // 按钮间距 for (NSUInteger i = 0; i < self.cutPointCout + 1; i++) { NSUInteger row = i / buttonNum; // 行号 NSUInteger loc = i % buttonNum; // 列号 CGFloat button_X = margin_X + (space_X + button_W) * loc; CGFloat button_Y = margin_Y + button_H * row; UIView *view = [[UIView alloc] initWithFrame:CGRectMake(button_X, button_Y, button_W, button_H)]; view.backgroundColor = [UIColor blackColor]; view.layer.cornerRadius = point_Height / 2; view.clipsToBounds = YES; [self.rangeSlider addSubview:view]; [self.rangeSlider sendSubviewToBack:view]; } } } - (void)setMinimumTintColor:(UIColor *)minimumTintColor { self.rangeSlider.tintColorBetweenHandles = minimumTintColor; } - (void)setMaximumTintColor:(UIColor *)maximumTintColor { self.rangeSlider.tintColorBetweenHandles = maximumTintColor; } - (void)setLeftImage:(UIImage *)leftImage { self.leftIconView.image = leftImage; } - (void)setLeftImageName:(NSString *)leftImageName { self.leftIconView.image = [UIImage imageNamed:leftImageName]; } - (void)setRightImage:(UIImage *)rightImage { self.rightIconView.image = rightImage; } - (void)setRightImageName:(NSString *)rightImageName { self.rightIconView.image = [UIImage imageNamed:rightImageName]; } - (void)setMinimumValue:(CGFloat)minimumValue { self.rangeSlider.minValue = minimumValue; } - (void)setMaximumValue:(CGFloat)maximumValue { self.rangeSlider.maxValue = maximumValue; } - (void)setSliderValue:(CGFloat)sliderValue { self.rangeSlider.selectedMaximum = sliderValue; } @end