UIViewControllerTransitioningDelegate
、UIViewControllerAnimatedTransitioning
およびを使用して、モーダルに表示されるビュー コントローラーのカスタム トランジションを作成しようとしていますUIPresentationController
。
私の提示ビューコントローラーUIViewControllerTransitioningDelegate
では、次のメソッドを実装して持っています。
-(id<UIViewControllerAnimatedTransitioning>)animationControllerForPresentedController:(UIViewController *)presented
presentingController:(UIViewController *)presenting
sourceController:(UIViewController *)source {
return [[MyAnimationController alloc] initWithAnimationType:MyAnimationTypePresent];
}
- (id<UIViewControllerAnimatedTransitioning>)animationControllerForDismissedController:(UIViewController *)dismissed {
return [[MyAnimationController alloc] initWithAnimationType:MyAnimationTypeDismiss];
}
- (UIPresentationController *)presentationControllerForPresentedViewController:(UIViewController *)presented
presentingViewController:(UIViewController *)presenting
sourceViewController:(UIViewController *)source {
return [[MyPresentationController alloc] initWithPresentedViewController:presented presentingViewController:presenting];
}
のサブクラスでUIPresentationController
、提示されたビュー コントローラーの下に調光ビューを追加し、外観の遷移と共にフェードインしたいと考えています。
- (void)presentationTransitionWillBegin {
self.dimmingView.alpha = 0.0f;
[self.containerView insertSubview:self.dimmingView atIndex:0];
[self.dimmingView autoPinEdgesToSuperviewEdges];
[self.presentedViewController.transitionCoordinator animateAlongsideTransition:^(id<UIViewControllerTransitionCoordinatorContext> _Nonnull context) {
self.dimmingView.alpha = 1.0f;
}
completion:nil];
}
- (void)dismissalTransitionWillBegin {
[self.presentedViewController.transitionCoordinator animateAlongsideTransition:^(id<UIViewControllerTransitionCoordinatorContext> _Nonnull context) {
self.dimmingView.alpha = 0.0f;
}
completion:^(id<UIViewControllerTransitionCoordinatorContext> _Nonnull context) {
[self.dimmingView removeFromSuperview]; }];
}
興味深い (そして非常に苛立たしい) ことは、提示されたビュー コントローラーの提示と終了のアニメーションが期待どおりに動作し、.NET で実装されていることMyAnimationController
です。私の調光ビューのフェードイン/フェードアウトに関しては、提示されたView Controllerを閉じるときにのみ機能します。それを提示するとき、フェードインはトランジションと一緒にアニメーション化されず、単に一定の時間を使用します。Apple のドキュメントといくつかのチュートリアルに従ってすべてを実装したと確信していますが、何らかの理由で期待どおりに動作しません。ここで問題が何であるかについて何か提案はありますか?