改变导航控制器的转换

时间:2013-12-21 06:17:52

标签: ios objective-c xcode uinavigationcontroller uinavigation

在典型的viewcontroller过渡两个视图中,消失和出现的视图都在移动,但是现在我想要创建一个自定义动画,在这里您可以将事件抛出以更改视图,视图将消失,只需隐藏而无需过渡和动画,视图将以相同的过渡继续显示。 那么这里的问题是我有导航栏而且我不知道,如何创建导航栏的自定义过渡? 你能帮我了解如何更改或删除导航控制器的转换。

我已经尝试了,但它只添加了其他转换,并且不会删除基本转换。

推送:

MainView *nextView = [[MainView alloc] init];
[UIView animateWithDuration:0.75
                 animations:^{
                                 [UIView setAnimationCurve:UIViewAnimationCurveEaseInOut];
                                 [self.navigationController pushViewController:nextView   animated:NO];
                                 [UIView     setAnimationTransition:UIViewAnimationTransitionFlipFromRight    forView:self.navigationController.view cache:NO];
                             }];

对于Pop:

[UIView animateWithDuration:0.75
                 animations:^{
                                 [UIView setAnimationCurve:UIViewAnimationCurveEaseInOut];
                                 [UIView setAnimationTransition:transition  forView:self.navigationController.view cache:NO];
                             }];
[self.navigationController popViewControllerAnimated:NO];

任何想法?谢谢:D

1 个答案:

答案 0 :(得分:0)

您可以使用添加为子视图并使用标题栏来模仿导航控制器。

MainView *nextView = [[MainView alloc] init];
//setup frame 
nextView.view.frame = xxx;
[self.view addSubview:nextView.view];

使用[nexView.view removeFromSuperView];

删除

OR

只需在当前视图上方添加一些默认隐藏的视图,并在某些操作上设置隐藏否,或者如果您想要保持下面的视图并将某些操作置于前面,请调用bringSubviewFront方法。