@@ -66,18 +66,31 @@ - (void)setActivityIndicatorViewStyle:(UIActivityIndicatorViewStyle)activityIndi
6666 }
6767}
6868
69- - (void )setColor : (UIColor*)color
69+ - (void )setColor : (UIColor*)color
7070{
71- _color = [color colorUsingColorSpaceName: NSCalibratedRGBColorSpace ];
72- CIFilter *colorPoly = [CIFilter filterWithName: @" CIColorPolynomial" ];
73- [colorPoly setDefaults ];
74- CIVector *redVector = [CIVector vectorWithX: color.redComponent Y: 0 Z: 0 W: 0 ];
75- CIVector *greenVector = [CIVector vectorWithX: color.greenComponent Y: 0 Z: 0 W: 0 ];
76- CIVector *blueVector = [CIVector vectorWithX: color.blueComponent Y: 0 Z: 0 W: 0 ];
77- [colorPoly setValue: redVector forKey: @" inputRedCoefficients" ];
78- [colorPoly setValue: greenVector forKey: @" inputGreenCoefficients" ];
79- [colorPoly setValue: blueVector forKey: @" inputBlueCoefficients" ];
80- self.contentFilters = @[colorPoly];
71+ if (_color != color) {
72+ _color = color;
73+ [self setNeedsDisplay: YES ];
74+ }
75+ }
76+
77+ - (void )updateLayer
78+ {
79+ [super updateLayer ];
80+ if (_color) {
81+ CGFloat r, g, b, a;
82+ [[_color colorUsingColorSpaceName: NSCalibratedRGBColorSpace ] getRed: &r green: &g blue: &b alpha: &a];
83+
84+ CIFilter *colorPoly = [CIFilter filterWithName: @" CIColorPolynomial" ];
85+ [colorPoly setDefaults ];
86+ CIVector *redVector = [CIVector vectorWithX: r Y: 0 Z: 0 W: 0 ];
87+ CIVector *greenVector = [CIVector vectorWithX: g Y: 0 Z: 0 W: 0 ];
88+ CIVector *blueVector = [CIVector vectorWithX: b Y: 0 Z: 0 W: 0 ];
89+ [colorPoly setValue: redVector forKey: @" inputRedCoefficients" ];
90+ [colorPoly setValue: greenVector forKey: @" inputGreenCoefficients" ];
91+ [colorPoly setValue: blueVector forKey: @" inputBlueCoefficients" ];
92+ self.contentFilters = @[colorPoly];
93+ }
8194}
8295
8396- (void )setHidesWhenStopped : (BOOL )hidesWhenStopped
0 commit comments