From 2658bfb6dc8afe5bf3dd1b2423895a736bc5d195 Mon Sep 17 00:00:00 2001 From: Vladimir Samoylenko Date: Tue, 4 Dec 2018 23:25:39 +0200 Subject: [PATCH 1/2] Issue 71: Feature request: Shadow support for handles --- Example/RangeSliderDemo/ViewController.m | 8 +++++ Pod/Classes/TTRangeSlider.h | 11 +++++++ Pod/Classes/TTRangeSlider.m | 37 ++++++++++++++++++++++++ 3 files changed, 56 insertions(+) diff --git a/Example/RangeSliderDemo/ViewController.m b/Example/RangeSliderDemo/ViewController.m index 187e398..77ea5af 100644 --- a/Example/RangeSliderDemo/ViewController.m +++ b/Example/RangeSliderDemo/ViewController.m @@ -29,6 +29,10 @@ - (void)viewDidLoad { self.rangeSlider.maxValue = 200; self.rangeSlider.selectedMinimum = 50; self.rangeSlider.selectedMaximum = 150; + + self.rangeSlider.shadowRadius = 2; + self.rangeSlider.shadowOpacity = 0.75; + [self.rangeSlider addTarget:self action:@selector(logControlEvent:) forControlEvents:UIControlEventValueChanged]; //currency range slider @@ -58,6 +62,10 @@ - (void)viewDidLoad { NSNumberFormatter *customFormatter = [[NSNumberFormatter alloc] init]; customFormatter.positiveSuffix = @"B"; self.rangeSliderCustom.numberFormatterOverride = customFormatter; + + self.rangeSliderCustom.shadowRadius = 3; + self.rangeSliderCustom.shadowOpacity = 0.5; + } - (void)didReceiveMemoryWarning { diff --git a/Pod/Classes/TTRangeSlider.h b/Pod/Classes/TTRangeSlider.h index c823ebc..1d31deb 100644 --- a/Pod/Classes/TTRangeSlider.h +++ b/Pod/Classes/TTRangeSlider.h @@ -193,4 +193,15 @@ typedef NS_ENUM(NSInteger, LabelPosition) { */ @property (nonatomic, assign) LabelPosition labelPosition; +/** + *Set radius of the shadow for handle. Also used for setting shadow offset value + */ + +@property (nonatomic, assign) IBInspectable CGFloat shadowRadius; + +/** + *Set the opacity of the shadow for handle + */ +@property (nonatomic, assign) IBInspectable float shadowOpacity; + @end diff --git a/Pod/Classes/TTRangeSlider.m b/Pod/Classes/TTRangeSlider.m index e2149f6..b31db66 100644 --- a/Pod/Classes/TTRangeSlider.m +++ b/Pod/Classes/TTRangeSlider.m @@ -692,6 +692,43 @@ -(void)setBarSidePadding:(CGFloat)barSidePadding { [self updateLabelPositions]; } +- (void)setShadowRadius:(CGFloat)shadowRadius { + _shadowRadius = shadowRadius; + _shadowOpacity = 1.0; + + [self.leftHandle removeFromSuperlayer]; + + self.leftHandle.shadowOffset = CGSizeMake(0.0, self.shadowRadius); + self.leftHandle.shadowRadius = self.shadowRadius; + self.leftHandle.shadowColor = self.tintColor.CGColor; + + [self.layer addSublayer:self.rightHandle]; + + self.rightHandle.shadowOffset = CGSizeMake(0.0, _shadowRadius); + self.rightHandle.shadowRadius = _shadowRadius; + self.rightHandle.shadowColor = self.tintColor.CGColor; + + [self.layer addSublayer:self.rightHandle]; +} + +- (void)setShadowOpacity:(float)shadowOpacity { + _shadowOpacity = shadowOpacity; + + [self.leftHandle removeFromSuperlayer]; + + self.leftHandle.shadowOffset = CGSizeMake(0.0, self.shadowRadius); + self.leftHandle.shadowOpacity = self.shadowOpacity; + self.leftHandle.shadowColor = self.tintColor.CGColor; + + [self.layer addSublayer:self.rightHandle]; + + self.rightHandle.shadowOffset = CGSizeMake(0.0, _shadowRadius); + self.rightHandle.shadowOpacity = _shadowOpacity; + self.rightHandle.shadowColor = self.tintColor.CGColor; + + [self.layer addSublayer:self.rightHandle]; +} + #pragma mark - UIAccessibility - (BOOL)isAccessibilityElement From d8c1d88340ca3c316c906da7c4b44044788a1e02 Mon Sep 17 00:00:00 2001 From: Vladimir Samoylenko Date: Wed, 5 Dec 2018 20:14:22 +0200 Subject: [PATCH 2/2] Issue #45 : a) fixing issue 'divide by zero' b) added setters for enableStep & step c) refresh procedure is calling after values updated --- Pod/Classes/TTRangeSlider.m | 14 +++++++++++++- 1 file changed, 13 insertions(+), 1 deletion(-) diff --git a/Pod/Classes/TTRangeSlider.m b/Pod/Classes/TTRangeSlider.m index b31db66..fbba611 100644 --- a/Pod/Classes/TTRangeSlider.m +++ b/Pod/Classes/TTRangeSlider.m @@ -373,7 +373,7 @@ - (BOOL)beginTrackingWithTouch:(UITouch *)touch withEvent:(UIEvent *)event { - (void)refresh { - if (self.enableStep && self.step>=0.0f){ + if (self.enableStep && self.step>0.0f){ _selectedMinimum = roundf(self.selectedMinimum/self.step)*self.step; _selectedMaximum = roundf(self.selectedMaximum/self.step)*self.step; } @@ -729,6 +729,18 @@ - (void)setShadowOpacity:(float)shadowOpacity { [self.layer addSublayer:self.rightHandle]; } +- (void)setEnableStep:(BOOL)enableStep { + _enableStep = enableStep; + + [self refresh]; +} + +- (void)setStep:(float)step { + _step = step; + + [self refresh]; +} + #pragma mark - UIAccessibility - (BOOL)isAccessibilityElement