2

サウンドを再生し、このメソッドを以下で呼び出すボタンがNIBファイルにあります。

-(void) animateHeart
{
    heartLayer = [[CALayer alloc] init];
    [heartLayer setBounds:CGRectMake(0.0, 0.0, 85.0, 85.0)];
    [heartLayer setPosition:CGPointMake(150.0, 100.0)]; 

    UIImage *heartImage = [UIImage imageNamed:@"heart.png"];
    CGFloat nativeWidth = CGImageGetWidth(heartImage.CGImage) / 3;
    CGFloat nativeHeight = CGImageGetHeight(heartImage.CGImage) / 3;

    CGRect  startFrame = CGRectMake(165.0, 145.0, nativeWidth, nativeHeight);
    heartLayer.contents = (id)heartImage.CGImage;
    heartLayer.frame = startFrame;
    [self.view.layer addSublayer:heartLayer];

    CABasicAnimation *theAnimation;

    theAnimation=[CABasicAnimation animationWithKeyPath:@"opacity"];
    theAnimation.duration=2.5;
    theAnimation.repeatCount=2;
    theAnimation.speed = 1.85;
    theAnimation.autoreverses=YES;
    theAnimation.timingFunction = [CAMediaTimingFunction functionWithName: kCAMediaTimingFunctionEaseInEaseOut];
    theAnimation.fromValue=[NSNumber numberWithFloat:0.0];
    theAnimation.toValue=[NSNumber numberWithFloat:1.0];
    [theAnimation setValue:heartLayer forKey:@"parentLayer"];

    [heartLayer addAnimation:theAnimation forKey:@"animateOpacity"];

    theAnimation.fillMode = kCAFillModeRemoved;
    theAnimation.removedOnCompletion = YES;


}

このメソッドは画像を完全にうまくアニメーション化しますが、それを行った後、removeedOnCompletion BOOLをtrueに設定したにもかかわらず、画像はビューにぶら下がったままになります。アニメーションが完成したら画像を消してもらいたいのですが。ここで助けていただければ幸いです。

よろしくお願いします。

4

2 に答える 2

0

置く:

theAnimation.fillMode = kCAFillModeRemoved;
theAnimation.removedOnCompletion = YES;

前:

[heartLayer addAnimation:theAnimation forKey:@"animateOpacity"];
于 2012-06-05T21:02:59.433 に答える
0

画像レイヤーがスーパーレイヤーから削除されるのではなく、アニメーションが完了時に画像のレイヤーから削除されるように設定しますremovedOnCompletionYES代理人を追加し、完了イベントを追跡しremoveFromSuperviewて、ビューを呼び出す必要があります。デリゲートにメソッドを実装- (void)animationDidStart:(CAAnimation *)theAnimationしてから、を呼び出します[heartLayer removeFromSuperlayer]

于 2012-06-05T21:03:38.403 に答える