1

シンプルなCGAffineTransformMakeScaleパルス ラベルを使用して、2 番目のブロックでイーズ アウト オプション、遅延などを適用しようとするとエラーが発生しますか? これがないと、アニメーションがぎくしゃくしてしまい、元のサイズに戻ると何もなくなります。

  [UIView animateWithDuration:1.0f delay:0 options: UIViewAnimationCurveEaseInOut|UIViewAnimationOptionAllowUserInteraction animations: ^{

[UIView setAnimationRepeatCount:10];

    self.transform = CGAffineTransformMakeScale(1.1,1.1);

} completion:^(BOOL finished) {


    [UIView animateWithDuration:1.0 animations:^{  // <<< "No known method for selector" error here if I add options

        self.transform = CGAffineTransformMakeScale(1.0,1.0);

    }];
}];
4

2 に答える 2

0

そのようなアニメーションを連鎖させないでください。下位レベルの CoreAnimation API を使用して、キーフレームでアニメーションを指定します。UIAlertView が画面に表示される方法を模倣する例を​​次に示します。

CAKeyframeAnimation* bounceAnim = [CAKeyframeAnimation animationWithKeyPath:@"transform.scale"];
bounceAnim.duration = 0.4f;
bounceAnim.values = @[ @0.01f, @1.1f, @0.9f, @1.f ];
bounceAnim.keyTimes = @[ @0.f, @0.5f, @0.75f, @1.f ];
bounceAnim.timingFunction = [CAMediaTimingFunction functionWithName:kCAMediaTimingFunctionEaseInEaseOut];
bounceAnim.fillMode = kCAFillModeBoth;
bounceAnim.removedOnCompletion = YES;

[dialog.layer addAnimation:bounceAnim forKey:@"bounce"];

ループするように変更したり、好みに合わせて値やタイミングを微調整したりできます。CAKeyframeAnimationドキュメントを確認してください。

于 2013-06-19T22:45:45.330 に答える