123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121 |
- /*****************************************************************************
- * VLCSlider.m
- * VLC for iOS
- *****************************************************************************
- * Copyright (c) 2013 VideoLAN. All rights reserved.
- * $Id$
- *
- * Authors: Felix Paul Kühne <fkuehne # videolan.org>
- *
- * Refer to the COPYING file of the official project for license.
- *****************************************************************************/
- #import "VLCSlider.h"
- @implementation VLCOBSlider
- - (void)awakeFromNib
- {
- self.accessibilityLabel = NSLocalizedString(@"PLAYBACK_POSITION", nil);
- self.isAccessibilityElement = YES;
- if (SYSTEM_RUNS_IOS7_OR_LATER)
- [self setThumbImage:[UIImage imageNamed:@"modernSliderKnob"] forState:UIControlStateNormal];
- else {
- self.minimumValueImage = [UIImage imageNamed:@"sliderminiValue"];
- self.maximumValueImage = [UIImage imageNamed:@"slidermaxValue"];
- [self setMinimumTrackImage:[UIImage imageNamed:@"sliderminimumTrack"] forState:UIControlStateNormal];
- [self setMaximumTrackImage:[UIImage imageNamed:@"slidermaximumTrack"] forState:UIControlStateNormal];
- [self setThumbImage:[UIImage imageNamed:@"ballSlider"] forState:UIControlStateNormal];
- [self setThumbImage:[UIImage imageNamed:@"knobSlider"] forState:UIControlStateHighlighted];
- }
- }
- - (CGRect)trackRectForBounds:(CGRect)bounds
- {
- CGRect returnValue = [super trackRectForBounds:bounds];
- if (SYSTEM_RUNS_IOS7_OR_LATER)
- return returnValue;
- returnValue.origin.x = 5.;
- returnValue.origin.y = 7.;
- returnValue.size.width = bounds.size.width - 10.;
- return returnValue;
- }
- @end
- @implementation VLCSlider
- - (instancetype)initWithFrame:(CGRect)frame
- {
- self = [super initWithFrame:frame];
- if (self)
- [self setThumbImage:[UIImage imageNamed:@"modernSliderKnob"] forState:UIControlStateNormal];
- return self;
- }
- - (void)awakeFromNib
- {
- if (SYSTEM_RUNS_IOS7_OR_LATER)
- [self setThumbImage:[UIImage imageNamed:@"modernSliderKnob"] forState:UIControlStateNormal];
- else {
- self.minimumValueImage = [UIImage imageNamed:@"sliderminiValue"];
- self.maximumValueImage = [UIImage imageNamed:@"slidermaxValue"];
- [self setMinimumTrackImage:[UIImage imageNamed:@"sliderminimumTrack"] forState:UIControlStateNormal];
- [self setMaximumTrackImage:[UIImage imageNamed:@"slidermaximumTrack"] forState:UIControlStateNormal];
- [self setThumbImage:[UIImage imageNamed:@"ballSlider"] forState:UIControlStateNormal];
- }
- }
- - (CGRect)trackRectForBounds:(CGRect)bounds
- {
- CGRect returnValue = [super trackRectForBounds:bounds];
- if (SYSTEM_RUNS_IOS7_OR_LATER)
- return returnValue;
- returnValue.origin.x = 5.;
- if (!SYSTEM_RUNS_IOS7_OR_LATER)
- returnValue.origin.y = 7.;
- returnValue.size.width = bounds.size.width - 10.;
- return returnValue;
- }
- @end
- @interface VLCResettingSlider ()
- @property (nonatomic, weak) UITapGestureRecognizer *doubleTapRecognizer;
- @end
- @implementation VLCResettingSlider
- - (void)awakeFromNib
- {
- [super awakeFromNib];
- if (self.resetOnDoubleTap) {
- [self setResetOnDoubleTap:YES];
- }
-
- }
- - (void)setResetOnDoubleTap:(BOOL)resetOnDoubleTap
- {
- _resetOnDoubleTap = resetOnDoubleTap;
- if (resetOnDoubleTap && self.doubleTapRecognizer == nil) {
- UITapGestureRecognizer *recognizer = [[UITapGestureRecognizer alloc] initWithTarget:self action:@selector(didDoubleTap:)];
- recognizer.numberOfTapsRequired = 2;
- [self addGestureRecognizer:recognizer];
- self.doubleTapRecognizer = recognizer;
- } else if (!resetOnDoubleTap) {
- UITapGestureRecognizer *recognizer = self.doubleTapRecognizer;
- [self removeGestureRecognizer:recognizer];
- self.doubleTapRecognizer = nil;
- }
- }
- - (IBAction)didDoubleTap:(id)sender {
- self.value = self.defaultValue;
- [self sendActionsForControlEvents:UIControlEventValueChanged];
- }
- @end
|