diff --git a/pop-tests/POPAnimatablePropertyTests.mm b/pop-tests/POPAnimatablePropertyTests.mm index 12a8f370..039d91a6 100644 --- a/pop-tests/POPAnimatablePropertyTests.mm +++ b/pop-tests/POPAnimatablePropertyTests.mm @@ -43,6 +43,10 @@ - (void)testProvidedExistence kPOPLayerRotation, kPOPLayerRotationY, kPOPLayerRotationX, + kPOPLayerShadowColor, + kPOPLayerShadowOffset, + kPOPLayerShadowOpacity, + kPOPLayerShadowRadius, kPOPShapeLayerStrokeStart, kPOPShapeLayerStrokeEnd, kPOPShapeLayerStrokeColor, diff --git a/pop/POPAnimatableProperty.h b/pop/POPAnimatableProperty.h index c4da777f..f2bccad8 100644 --- a/pop/POPAnimatableProperty.h +++ b/pop/POPAnimatableProperty.h @@ -110,6 +110,10 @@ extern NSString * const kPOPLayerTranslationXY; extern NSString * const kPOPLayerTranslationY; extern NSString * const kPOPLayerTranslationZ; extern NSString * const kPOPLayerZPosition; +extern NSString * const kPOPLayerShadowColor; +extern NSString * const kPOPLayerShadowOffset; +extern NSString * const kPOPLayerShadowOpacity; +extern NSString * const kPOPLayerShadowRadius; /** Common CAShapeLayer property names. diff --git a/pop/POPAnimatableProperty.mm b/pop/POPAnimatableProperty.mm index 4a93ba78..cdfdfab9 100644 --- a/pop/POPAnimatableProperty.mm +++ b/pop/POPAnimatableProperty.mm @@ -54,6 +54,10 @@ NSString * const kPOPLayerTranslationY = @"translationY"; NSString * const kPOPLayerTranslationZ = @"translationZ"; NSString * const kPOPLayerZPosition = @"zPosition"; +NSString * const kPOPLayerShadowColor = @"shadowColor"; +NSString * const kPOPLayerShadowOffset = @"shadowOffset"; +NSString * const kPOPLayerShadowOpacity = @"shadowOpacity"; +NSString * const kPOPLayerShadowRadius = @"shadowRadius"; // CAShapeLayer NSString * const kPOPShapeLayerStrokeStart = @"shapeLayer.strokeStart"; @@ -351,6 +355,49 @@ }, kPOPThresholdRotation }, + + {kPOPLayerShadowColor, + ^(CALayer *obj, CGFloat values[]) { + POPCGColorGetRGBAComponents(obj.shadowColor, values); + }, + ^(CALayer *obj, const CGFloat values[]) { + CGColorRef color = POPCGColorRGBACreate(values); + [obj setShadowColor:color]; + CGColorRelease(color); + }, + 0.01 + }, + + {kPOPLayerShadowOffset, + ^(CALayer *obj, CGFloat values[]) { + values_from_size(values, [obj shadowOffset]); + }, + ^(CALayer *obj, const CGFloat values[]) { + CGSize size = values_to_size(values); + [obj setShadowOffset:size]; + }, + 0.01 + }, + + {kPOPLayerShadowOpacity, + ^(CALayer *obj, CGFloat values[]) { + values[0] = [obj shadowOpacity]; + }, + ^(CALayer *obj, const CGFloat values[]) { + [obj setShadowOpacity:values[0]]; + }, + 0.01 + }, + + {kPOPLayerShadowRadius, + ^(CALayer *obj, CGFloat values[]) { + values[0] = [obj shadowRadius]; + }, + ^(CALayer *obj, const CGFloat values[]) { + [obj setShadowRadius:values[0]]; + }, + 0.01 + }, /* CAShapeLayer */