小说绘上架版本
This commit is contained in:
@@ -0,0 +1,61 @@
|
||||
//
|
||||
// TFSliderView.h
|
||||
// TFReader
|
||||
//
|
||||
// Created by 谢腾飞 on 2020/12/25.
|
||||
// Copyright © 2020 xtfei_2011@126.com. All rights reserved.
|
||||
//
|
||||
|
||||
#import <UIKit/UIKit.h>
|
||||
|
||||
NS_ASSUME_NONNULL_BEGIN
|
||||
|
||||
@class TFSliderView;
|
||||
@protocol TFSliderViewDelegate <NSObject>
|
||||
|
||||
- (void)sliderValueEndChanged:(CGFloat)endValue slider:(TFSliderView *)sender;
|
||||
|
||||
@end
|
||||
|
||||
@interface TFSliderView : UIView
|
||||
|
||||
@property (nonatomic ,weak) id<TFSliderViewDelegate> delegate;
|
||||
|
||||
// 分段式滑块 Default is NO
|
||||
@property (nonatomic ,assign) BOOL stepSlider;
|
||||
|
||||
// 倒置返回值
|
||||
@property (nonatomic ,assign) BOOL invertedValue;
|
||||
|
||||
// 最小值
|
||||
@property (nonatomic ,assign) CGFloat minimumValue;
|
||||
|
||||
// 最大值
|
||||
@property (nonatomic ,assign) CGFloat maximumValue;
|
||||
|
||||
// 滑块值
|
||||
@property (nonatomic ,assign) CGFloat sliderValue;
|
||||
|
||||
// 左侧滑条颜色
|
||||
@property (nonatomic ,strong) UIColor *minimumTintColor;
|
||||
|
||||
// 右侧滑条颜色
|
||||
@property (nonatomic ,strong) UIColor *maximumTintColor;
|
||||
|
||||
// 左侧图片名称
|
||||
@property (nonatomic ,copy) NSString *leftImageName;
|
||||
|
||||
// 右侧图片名称
|
||||
@property (nonatomic ,copy) NSString *rightImageName;
|
||||
|
||||
// 左侧图片
|
||||
@property (nonatomic ,strong) UIImage *leftImage;
|
||||
|
||||
// 右侧图片
|
||||
@property (nonatomic ,strong) UIImage *rightImage;
|
||||
|
||||
- (instancetype)initWithFrame:(CGRect)frame sliderCutPointCount:(NSUInteger)cutPointCount;
|
||||
|
||||
@end
|
||||
|
||||
NS_ASSUME_NONNULL_END
|
||||
@@ -0,0 +1,152 @@
|
||||
//
|
||||
// TFSliderView.m
|
||||
// TFReader
|
||||
//
|
||||
// Created by 谢腾飞 on 2020/12/25.
|
||||
// Copyright © 2020 xtfei_2011@126.com. All rights reserved.
|
||||
//
|
||||
|
||||
#import "TFSliderView.h"
|
||||
#import <TTRangeSlider/TTRangeSlider.h>
|
||||
|
||||
#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
|
||||
Reference in New Issue
Block a user