更改导航控制器 ios 的转换

Posted

技术标签:

【中文标题】更改导航控制器 ios 的转换【英文标题】:change transition of navigationcontroller ios 【发布时间】:2013-12-21 06:17:52 【问题描述】:

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

我试过了,但它只添加了其他过渡,并没有删除基本过渡。

对于推送:

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];
                             ];

对于流行音乐:

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

有什么想法吗?谢谢 :D

【问题讨论】:

【参考方案1】:

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

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

使用[nexView.view removeFromSuperView];删除

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

【讨论】:

感谢您的评论,在每个视图中我可以将它放在哪里?还是在视图导航控制器中?当你说 nextView.view.frame = xxx; xxx 是一个 CGRect()? 如果您只想在当前视图中显示“nextView”,则在视图中显示“是”。但如果它要在其他地方使用,也要使用导航控制器。并隐藏导航标题栏。是 xxx CGRect()

以上是关于更改导航控制器 ios 的转换的主要内容,如果未能解决你的问题,请参考以下文章

如何更改 iOS 中导航控制器的工具栏颜色?

导航控制器转换上的iOS黑线

导航控制器内的iOS ScrollView + Page Controller:如何更改每个页面的导航栏标题?

反转 SWIFT 中导航控制器的默认转换 [重复]

iOS:更改所有导航栏的 self.navigationController.navigationBar.tintColor 更改

iOS 11:带有不透明导航栏的导航控制器内带有滚动视图的弹出视图控制器在转换期间导致奇怪的内容动画