UNPKG

2.64 kBPlain TextView Raw
1/*
2 * Copyright (c) Facebook, Inc. and its affiliates.
3 *
4 * This source code is licensed under the MIT license found in the
5 * LICENSE file in the root directory of this source tree.
6 */
7
8#import "RCTSlider.h"
9
10@implementation RCTSlider
11{
12 float _unclippedValue;
13}
14
15- (void)setValue:(float)value
16{
17 _unclippedValue = value;
18 super.value = value;
19}
20
21- (void)setMinimumValue:(float)minimumValue
22{
23 super.minimumValue = minimumValue;
24 super.value = _unclippedValue;
25}
26
27- (void)setMaximumValue:(float)maximumValue
28{
29 super.maximumValue = maximumValue;
30 super.value = _unclippedValue;
31}
32
33- (void)setTrackImage:(UIImage *)trackImage
34{
35 if (trackImage != _trackImage) {
36 _trackImage = trackImage;
37 CGFloat width = trackImage.size.width / 2;
38 UIImage *minimumTrackImage = [trackImage resizableImageWithCapInsets:(UIEdgeInsets){
39 0, width, 0, width
40 } resizingMode:UIImageResizingModeStretch];
41 UIImage *maximumTrackImage = [trackImage resizableImageWithCapInsets:(UIEdgeInsets){
42 0, width, 0, width
43 } resizingMode:UIImageResizingModeStretch];
44 [self setMinimumTrackImage:minimumTrackImage forState:UIControlStateNormal];
45 [self setMaximumTrackImage:maximumTrackImage forState:UIControlStateNormal];
46 }
47}
48
49- (void)setMinimumTrackImage:(UIImage *)minimumTrackImage
50{
51 _trackImage = nil;
52 minimumTrackImage = [minimumTrackImage resizableImageWithCapInsets:(UIEdgeInsets){
53 0, minimumTrackImage.size.width, 0, 0
54 } resizingMode:UIImageResizingModeStretch];
55 [self setMinimumTrackImage:minimumTrackImage forState:UIControlStateNormal];
56}
57
58- (UIImage *)minimumTrackImage
59{
60 return [self thumbImageForState:UIControlStateNormal];
61}
62
63- (void)setMaximumTrackImage:(UIImage *)maximumTrackImage
64{
65 _trackImage = nil;
66 maximumTrackImage = [maximumTrackImage resizableImageWithCapInsets:(UIEdgeInsets){
67 0, 0, 0, maximumTrackImage.size.width
68 } resizingMode:UIImageResizingModeStretch];
69 [self setMaximumTrackImage:maximumTrackImage forState:UIControlStateNormal];
70}
71
72- (UIImage *)maximumTrackImage
73{
74 return [self thumbImageForState:UIControlStateNormal];
75}
76
77- (void)setThumbImage:(UIImage *)thumbImage
78{
79 [self setThumbImage:thumbImage forState:UIControlStateNormal];
80}
81
82- (UIImage *)thumbImage
83{
84 return [self thumbImageForState:UIControlStateNormal];
85}
86
87- (void)accessibilityIncrement
88{
89 [super accessibilityIncrement];
90 if (_onSlidingComplete) {
91 _onSlidingComplete(@{
92 @"value": @(self.value),
93 });
94 }
95}
96
97- (void)accessibilityDecrement
98{
99 [super accessibilityDecrement];
100 if (_onSlidingComplete) {
101 _onSlidingComplete(@{
102 @"value": @(self.value),
103 });
104 }
105}
106
107@end