@@ -77,6 +77,8 @@ - (void) configureView
77
77
78
78
_lowerMaximumValue = NAN;
79
79
_upperMinimumValue = NAN;
80
+ _upperHandleHidden = NO ;
81
+ _lowerHandleHidden = NO ;
80
82
}
81
83
82
84
// ------------------------------------------------------------------------------------------------------
@@ -192,6 +194,18 @@ - (void)setUpperValue:(float)upperValue animated:(BOOL) animated
192
194
[self setLowerValue: NAN upperValue: upperValue animated: animated];
193
195
}
194
196
197
+ - (void ) setLowerHandleHidden : (BOOL )lowerHandleHidden
198
+ {
199
+ _lowerHandleHidden = lowerHandleHidden;
200
+ [self setNeedsLayout ];
201
+ }
202
+
203
+ - (void ) setUpperHandleHidden : (BOOL )upperHandleHidden
204
+ {
205
+ _upperHandleHidden = upperHandleHidden;
206
+ [self setNeedsLayout ];
207
+ }
208
+
195
209
// ON-Demand images. If the images are not set, then the default values are loaded.
196
210
197
211
- (UIImage *)trackBackgroundImage
@@ -318,9 +332,12 @@ - (CGRect)trackRect
318
332
{
319
333
retValue.size .height =self.bounds .size .height ;
320
334
}
321
-
322
- float xLowerValue = ((self.bounds .size .width - _lowerHandle.frame .size .width ) * (_lowerValue - _minimumValue) / (_maximumValue - _minimumValue))+(_lowerHandle.frame .size .width /2 .0f );
323
- float xUpperValue = ((self.bounds .size .width - _upperHandle.frame .size .width ) * (_upperValue - _minimumValue) / (_maximumValue - _minimumValue))+(_upperHandle.frame .size .width /2 .0f );
335
+
336
+ float lowerHandleWidth = _lowerHandleHidden ? 2 .0f : _lowerHandle.frame .size .width ;
337
+ float upperHandleWidth = _upperHandleHidden ? 2 .0f : _upperHandle.frame .size .width ;
338
+
339
+ float xLowerValue = ((self.bounds .size .width - lowerHandleWidth) * (_lowerValue - _minimumValue) / (_maximumValue - _minimumValue))+(lowerHandleWidth/2 .0f );
340
+ float xUpperValue = ((self.bounds .size .width - upperHandleWidth) * (_upperValue - _minimumValue) / (_maximumValue - _minimumValue))+(upperHandleWidth/2 .0f );
324
341
325
342
retValue.origin = CGPointMake (xLowerValue, (self.bounds .size .height /2 .0f ) - (retValue.size .height /2 .0f ));
326
343
retValue.size .width = xUpperValue-xLowerValue;
@@ -424,13 +441,33 @@ -(void)layoutSubviews
424
441
_haveAddedSubviews=YES ;
425
442
[self addSubviews ];
426
443
}
427
-
444
+
445
+ if (_lowerHandleHidden)
446
+ {
447
+ _lowerValue = _minimumValue;
448
+ }
449
+
450
+ if (_upperHandleHidden)
451
+ {
452
+ _upperValue = _maximumValue;
453
+ }
428
454
429
455
self.trackBackground .frame = [self trackBackgroundRect ];
430
456
self.track .frame = [self trackRect ];
431
457
self.track .image = [self trackImageForCurrentValues ];
458
+
459
+ // Layout the lower handle
432
460
self.lowerHandle .frame = [self thumbRectForValue: _lowerValue image: self .lowerHandleImageNormal];
461
+ self.lowerHandle .image = self.lowerHandleHidden ? nil : self.lowerHandleImageNormal ;
462
+ self.lowerHandle .highlightedImage = self.lowerHandleHidden ? nil : self.lowerHandleImageHighlighted ;
463
+ self.lowerHandle .userInteractionEnabled = !self.lowerHandleHidden ;
464
+
465
+ // Layoput the upper handle
433
466
self.upperHandle .frame = [self thumbRectForValue: _upperValue image: self .upperHandleImageNormal];
467
+ self.upperHandle .image = self.upperHandleHidden ? nil : self.upperHandleImageNormal ;
468
+ self.upperHandle .highlightedImage = self.upperHandleHidden ? nil : self.upperHandleImageHighlighted ;
469
+ self.upperHandle .userInteractionEnabled = !self.upperHandleHidden ;
470
+
434
471
}
435
472
436
473
- (CGSize)intrinsicContentSize
0 commit comments