この基本的なビューアニメーションについて考えてみましょう。1秒間で、ビューがゼロに縮小されます。
[UIView animateWithDuration: 1.0
delay: 0.0
options: UIViewAnimationCurveEaseIn
animations:^{
vw.transform = CGAffineTransformMakeScale(0.0, 0.0);
}
completion:^(BOOL finished) {
if (finished) {
vw.transform = CGAffineTransformIdentity;
}
}
];
私がやりたいのは、この同じアニメーションを、アプリ全体のさまざまな時間にさまざまなビューで使用することです。これを行うには、メソッドに簡単に入れて、ズームしたいビューを渡すことができます。問題ない。
課題は、状況によっては、アニメーションの完成時に別のことをする必要があるかもしれないということです。たとえば、ある場合にはSuperViewからビューを削除したい場合があり、別の場合にはビューを新しい場所に移動したい場合があります(後でズームインするため)。
簡単に言うと、アニメーションが完了したときに、メソッドの呼び出し元に通知するにはどうすればよいですか?
completion:^(BOOL finished) {
if (finished) {
vw.transform = CGAffineTransformIdentity;
// Do something unique here
}
}