我已經通過實施在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