如何创建过渡导航控制器?

时间:2014-07-23 13:26:29

标签: ios objective-c transform

我希望在两个UIViewControllers之间进行转换,例如推送转换。 当我使用推送转换默认时,我的视图从右向左变换。但我希望我的观点从左到右转换。

请指导我

2 个答案:

答案 0 :(得分:0)

这可能会有所帮助。虽然我相信必须有更好的方法。

    UIViewController *vc = [[UIViewController alloc] init]; // create the new view controller to "push"
    NSArray *viewControllers = self.navigationController.viewControllers;
    NSMutableArray *mutableViewControllers = [viewControllers mutableCopy];
    NSInteger indexOfSelf = [mutableViewControllers indexOfObject:self];
    [mutableViewControllers insertObject:vc atIndex:indexOfSelf];
    [self.navigationController setViewControllers:mutableViewControllers];
    [self.navigationController popViewControllerAnimated:YES]; // actually, it's a "pop" action

答案 1 :(得分:0)

我采用了解决方案here并对其进行了修改,使其看起来更清晰,并从所需方向推出。虽然它有所需的方向动画,但导航栏中有一些我无法消除的闪烁。

CATransition *transition = [CATransition animation];
transition.duration = 0.4f;
transition.timingFunction = [CAMediaTimingFunction functionWithName:kCAMediaTimingFunctionEaseInEaseOut];
transition.type = kCATransitionPush;
transition.subtype = kCATransitionFromLeft;
transition.delegate = self;
[self.navigationController.view.layer addAnimation:transition forKey:nil];
[self.navigationController pushViewController:yourViewControllerHere animated:NO];

另外请记住,用户非常习惯于从右侧推送下一个视图控制器。在更改标准项目的外观/感觉之前要仔细考虑,因为这会让您的用户感到困惑。