1
我正在使用最新的iOS 7動畫轉換協議來創建淡入淡出轉換,其中一個推送視圖控制器;該類別的成員PSSpaceDetailViewController
。但是,對於所有其他推送轉換,我想使用UINavigationController
通常提供的默認推送動畫。UINavigationController震動推送轉換
但是,我已經實現了以下代碼來完成該操作,當我從上述類中推入單獨的視圖控制器時,我收到了一個奇怪的延遲動畫動畫。任何想法爲什麼發生這種情況?我已經上傳了一個簡短的視頻顯示,我試圖來形容,希望這將使它更容易理解錯誤動畫:http://d.pr/v/Q754
//PSAnimatngNavigationControllerDelegate.m
+ (instancetype) sharedInstance {
static PSAnimatingNavigationControllerDelegate *shared;
static dispatch_once_t onceToken;
dispatch_once(&onceToken, ^{
shared = [[PSAnimatingNavigationControllerDelegate alloc] init];
});
return shared;
}
- (PSFadeAnimator *) animator {
if (!_animator) {
_animator = [[PSFadeAnimator alloc] init];
}
return _animator;
}
- (id<UIViewControllerAnimatedTransitioning>)navigationController:(UINavigationController *)navigationController animationControllerForOperation:(UINavigationControllerOperation)operation fromViewController:(UIViewController *)fromVC toViewController:(UIViewController *)toVC
{
if (operation == UINavigationControllerOperationPush && [toVC isKindOfClass:[PSSpaceDetailViewController class]]) {
return self.animator;
}
return nil;
}
// App Delegate.m
UINavigationController *navigationController = [[UINavigationController alloc] initWithRootViewController:notesViewController];
[navigationController setDelegate:[PSAnimatingNavigationControllerDelegate sharedInstance]];
PSSpaceDetailViewController.m
- (void) tableView:(UITableView *)tableView didSelectRowAtIndexPath:(NSIndexPath *)indexPath {
PSMatchDetailViewController *matchDetail = [[PSMatchDetailViewController alloc] initWithOriginalSpace:self.space andPotentialLead:self.datasource[indexPath.section][indexPath.row]];
[self.navigationController pushViewController:matchDetail animated:YES];
}