私はバウンス効果を与えるアニメーションで提示するカスタム ビューを持っています。今、縮小してから消えるのと同じように消えたいです。
ビューにバウンス効果を表示する以下のコードは正常に機能しています。
self.componentDetailController.view.center = iGestureRecognizer.view.center;
self.componentDetailController.view.alpha = 0.0;
self.componentDetailController.view.transform = CGAffineTransformMakeScale(0.01, 0.01);
[UIView animateWithDuration:(0.2) animations:^{
self.componentDetailController.view.center = CGPointMake(kScreenWidth / 2, kScreenHeight / 2);
self.componentDetailController.view.alpha = 0.5;
self.componentDetailController.view.transform = CGAffineTransformMakeScale(1.05, 1.05);
} completion:^(BOOL iFinished) {
[UIView animateWithDuration:(0.1) animations:^{
self.componentDetailController.view.alpha = 0.90;
self.componentDetailController.view.center = CGPointMake(kScreenWidth / 2, kScreenHeight / 2);
self.componentDetailController.view.transform = CGAffineTransformMakeScale(0.98, 0.98);
} completion:^(BOOL iFinished) {
self.componentDetailController.view.alpha = 1.0;
self.componentDetailController.view.transform = CGAffineTransformMakeScale(1.0, 1.0);
self.componentDetailController.view.transform = CGAffineTransformIdentity;
}];
}];
機能していないビューを縮小して閉じるために、以下のコードを書きました。ビューを少し前面に出しますが、それを却下するわけではありません。ここで何が間違っているかの手がかり:
- (void)cancelButtonPressed {
self.componentDetailController.view.transform = CGAffineTransformIdentity;
[UIView animateWithDuration:(0.1) animations:^{
self.componentDetailController.view.alpha = 1.0;
self.componentDetailController.view.transform = CGAffineTransformMakeScale(1.05, 1.05);
} completion:^(BOOL iFinished) {
[UIView animateWithDuration:(0.4) animations:^{
self.componentDetailController.view.center = self.tappedComponentView.center;
self.componentDetailController.view.transform = CGAffineTransformMakeScale(0.01, 0.01);
self.componentDetailController.view.backgroundColor = [UIColor clearColor];
self.componentDetailController.view.alpha = 0.0;
} completion:^(BOOL iFinished) {
[self.componentDetailController.view removeFromSuperview];
}];
}];
self.componentDetailController = nil;
[self enableBackView];
}
ここで、self.tappedComponentView.center は self.tappedComponentView.center と同じです。