我已经通过实施在UIViewControllerTransitioningDelegate
协议的方法创建了一个模态视图控制器的自定义过渡动画不被调用。UIViewControllerTransitioningDelegate方法在IOS 7
在iOS 8和9中,这些方法通常被调用,并且转换工作。但是,在iOS 7中,animationControllerForPresentedController:presentingController:sourceController:
方法永远不会被调用。 animationControllerForDismissedController:
方法仍然正常调用。
#import "MyModalTransitioningDelegate.h"
#import "MyModalFadeTransition.h"
@implementation MyModalTransitioningDelegate
- (id<UIViewControllerAnimatedTransitioning>)animationControllerForPresentedController:(UIViewController *)presented
presentingController:(UIViewController *)presenting
sourceController:(UIViewController *)source
{
return [[MyModalFadeTransition alloc] init];
}
- (id<UIViewControllerAnimatedTransitioning>)animationControllerForDismissedController:(UIViewController *)dismissed
{
return [[MyModalFadeTransition alloc] init];
}
@end
在模态视图控制器(即“呈现控制器”)我已经在其-viewDidLoad
方法如下:
self.modalTransitionDelegate = [[OTModalTransitioningDelegate alloc] init]; // This is a custom strong private property due to `tranisitioningDelegate` being a weak property.
self.transitioningDelegate = self.modalTransitionDelegate;
self.modalPresentationStyle = UIModalPresentationCustom;
设置modalPresentationStyle
似乎并没有做出任何版本有什么区别的iOS。没有被调用的方法确实说它在iOS 7中可用,所以我不确定它为什么不被调用。
模态视图控制器被呈现在所述呈现视图控制器以下代码:
[self presentViewController:self.modalViewController
animated:YES
completion:nil];
非常感谢!为什么Xcode不提示原来的方法是错误的。 –
谢谢!在这一个浪费时间。 – Jessica
Omg。谢谢。 – chrismanderson