Вам необходимо анимировать shadowOffset слоя с помощью CAAnimation.Вот пример того, как увеличить shadowOffset при перемещении объекта.В этом примере используется UIButton.
#import <UIKit/UIKit.h>
#import <QuartzCore/QuartzCore.h>
@interface ViewController : UIViewController
@property (nonatomic, retain) IBOutlet UIButton *button;
@end
В файле M я вызываю анимации на кнопке с помощью кнопок IBAction.
-(IBAction)shadowGrow:(id)sender {
CABasicAnimation *shadowGrow = [CABasicAnimation animationWithKeyPath:@"shadowRadius" ];
shadowGrow.delegate = self;
[shadowGrow setFromValue:[NSNumber numberWithFloat:3.0]];
[shadowGrow setToValue:[NSNumber numberWithFloat:20.0]];
[shadowGrow setDuration:1.0f];
shadowGrow.autoreverses = YES;
CABasicAnimation *move = [CABasicAnimation animationWithKeyPath:@"transform.translation.x" ];
move.delegate = self;
[move setFromValue:[NSNumber numberWithFloat:0]];
[move setToValue:[NSNumber numberWithFloat:50]];
[move setDuration:1.0f];
move.autoreverses = YES;
//Add animation to a specific element's layer. Must be called after the element is displayed.
[[button layer] addAnimation:shadowGrow forKey:@"shadowRadius"];
[[button layer] addAnimation:move forKey:@"transform.translation.x"];
}
При использовании CoreAnimation следует помнить одну вещь:таким свойствам они будут возвращаться к своим значениям с самого начала, если только вы не установите эти значения после окончания анимации в методе делегирования CAAnimation.
- (void) animationDidStop:(NSString *)theAnimation finished:(NSNumber *)finished context:(void *)context
Вот некоторая дополнительная информация об анимируемых свойствах CALayer.1010 *
Свойства анимации слоя и фильтра CIF