1 |
|
2 |
|
3 |
|
4 |
|
5 |
|
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
|