0

UIView次を使用して、影をフェードインすると同時にスケールしようとしています。

    myController.view.layer.shadowOffset = CGSizeMake(0, 3);
    myController.view.layer.shadowColor = [UIColor blackColor].CGColor;
    myController.view.layer.shadowOpacity = 0.0;
    myController.view.layer.shadowPath = [UIBezierPath bezierPathWithRect:myController.view.bounds].CGPath;

    [UIView animateWithDuration:0.3
                     animations:^{
                         //shrink the view
                         myController.view.transform = CGAffineTransformMakeScale(0.8, 0.8);

                         //fade in the shadow
                         myController.view.layer.shadowOpacity = 0.8;
                     }
                     completion:^(BOOL finished){
                          ...etc

ビューのサイズは正しく変更されますが、影はフェードインせずにすぐに表示されます。

私は何か間違ったことをしていますか?アニメ化可能だと思いましshadowOpacityたか?

4

1 に答える 1

2

ビュー レイヤー プロパティをアニメーション化するには、コア アニメーションを使用する必要があります。

#import <QuartzCore/CAAnimation.h>

CABasicAnimation *animation = [CABasicAnimation animationWithKeyPath:@"shadowOpacity"];
animation.fromValue = [NSNumber numberWithFloat:1.0];
animation.toValue = [NSNumber numberWithFloat:0.8];
animation.duration = 1.0;
[myView.layer addAnimation:animation forKey:@"shadowOpacity"];
myView.layer.shadowOpacity = 0.0;
于 2012-10-28T06:15:47.097 に答える