VLCSlider.m 3.9 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121
  1. /*****************************************************************************
  2. * VLCSlider.m
  3. * VLC for iOS
  4. *****************************************************************************
  5. * Copyright (c) 2013 VideoLAN. All rights reserved.
  6. * $Id$
  7. *
  8. * Authors: Felix Paul Kühne <fkuehne # videolan.org>
  9. *
  10. * Refer to the COPYING file of the official project for license.
  11. *****************************************************************************/
  12. #import "VLCSlider.h"
  13. @implementation VLCOBSlider
  14. - (void)awakeFromNib
  15. {
  16. self.accessibilityLabel = NSLocalizedString(@"PLAYBACK_POSITION", nil);
  17. self.isAccessibilityElement = YES;
  18. if (SYSTEM_RUNS_IOS7_OR_LATER)
  19. [self setThumbImage:[UIImage imageNamed:@"modernSliderKnob"] forState:UIControlStateNormal];
  20. else {
  21. self.minimumValueImage = [UIImage imageNamed:@"sliderminiValue"];
  22. self.maximumValueImage = [UIImage imageNamed:@"slidermaxValue"];
  23. [self setMinimumTrackImage:[UIImage imageNamed:@"sliderminimumTrack"] forState:UIControlStateNormal];
  24. [self setMaximumTrackImage:[UIImage imageNamed:@"slidermaximumTrack"] forState:UIControlStateNormal];
  25. [self setThumbImage:[UIImage imageNamed:@"ballSlider"] forState:UIControlStateNormal];
  26. [self setThumbImage:[UIImage imageNamed:@"knobSlider"] forState:UIControlStateHighlighted];
  27. }
  28. }
  29. - (CGRect)trackRectForBounds:(CGRect)bounds
  30. {
  31. CGRect returnValue = [super trackRectForBounds:bounds];
  32. if (SYSTEM_RUNS_IOS7_OR_LATER)
  33. return returnValue;
  34. returnValue.origin.x = 5.;
  35. returnValue.origin.y = 7.;
  36. returnValue.size.width = bounds.size.width - 10.;
  37. return returnValue;
  38. }
  39. @end
  40. @implementation VLCSlider
  41. - (instancetype)initWithFrame:(CGRect)frame
  42. {
  43. self = [super initWithFrame:frame];
  44. if (self)
  45. [self setThumbImage:[UIImage imageNamed:@"modernSliderKnob"] forState:UIControlStateNormal];
  46. return self;
  47. }
  48. - (void)awakeFromNib
  49. {
  50. if (SYSTEM_RUNS_IOS7_OR_LATER)
  51. [self setThumbImage:[UIImage imageNamed:@"modernSliderKnob"] forState:UIControlStateNormal];
  52. else {
  53. self.minimumValueImage = [UIImage imageNamed:@"sliderminiValue"];
  54. self.maximumValueImage = [UIImage imageNamed:@"slidermaxValue"];
  55. [self setMinimumTrackImage:[UIImage imageNamed:@"sliderminimumTrack"] forState:UIControlStateNormal];
  56. [self setMaximumTrackImage:[UIImage imageNamed:@"slidermaximumTrack"] forState:UIControlStateNormal];
  57. [self setThumbImage:[UIImage imageNamed:@"ballSlider"] forState:UIControlStateNormal];
  58. }
  59. }
  60. - (CGRect)trackRectForBounds:(CGRect)bounds
  61. {
  62. CGRect returnValue = [super trackRectForBounds:bounds];
  63. if (SYSTEM_RUNS_IOS7_OR_LATER)
  64. return returnValue;
  65. returnValue.origin.x = 5.;
  66. if (!SYSTEM_RUNS_IOS7_OR_LATER)
  67. returnValue.origin.y = 7.;
  68. returnValue.size.width = bounds.size.width - 10.;
  69. return returnValue;
  70. }
  71. @end
  72. @interface VLCResettingSlider ()
  73. @property (nonatomic, weak) UITapGestureRecognizer *doubleTapRecognizer;
  74. @end
  75. @implementation VLCResettingSlider
  76. - (void)awakeFromNib
  77. {
  78. [super awakeFromNib];
  79. if (self.resetOnDoubleTap) {
  80. [self setResetOnDoubleTap:YES];
  81. }
  82. }
  83. - (void)setResetOnDoubleTap:(BOOL)resetOnDoubleTap
  84. {
  85. _resetOnDoubleTap = resetOnDoubleTap;
  86. if (resetOnDoubleTap && self.doubleTapRecognizer == nil) {
  87. UITapGestureRecognizer *recognizer = [[UITapGestureRecognizer alloc] initWithTarget:self action:@selector(didDoubleTap:)];
  88. recognizer.numberOfTapsRequired = 2;
  89. [self addGestureRecognizer:recognizer];
  90. self.doubleTapRecognizer = recognizer;
  91. } else if (!resetOnDoubleTap) {
  92. UITapGestureRecognizer *recognizer = self.doubleTapRecognizer;
  93. [self removeGestureRecognizer:recognizer];
  94. self.doubleTapRecognizer = nil;
  95. }
  96. }
  97. - (IBAction)didDoubleTap:(id)sender {
  98. self.value = self.defaultValue;
  99. [self sendActionsForControlEvents:UIControlEventValueChanged];
  100. }
  101. @end