我在导航控制器中使用了一个自定义unwind segue,在segue的动画中导航栏在动画期间是不可见的,当动画结束时导航栏'弹出'。我如何在动画期间保持导航栏的可见性?
更多细节:
我在导航栏中有一个按钮调用模态视图这个动画按预期执行,新视图有一个按钮来触发unwind segue动画视图增长和消失,而这个动画正在执行目标视图控制器中的导航栏直到动画完成才可见。
这是我用于自定义segue的代码。
- (void) perform {
UIViewController *sourceViewcontroller = self.sourceViewController;
UIViewController *destinationViewcontroller = self.destinationViewController;
[sourceViewcontroller.view.superview insertSubview:destinationViewcontroller.view atIndex:0];
[destinoViewcontroller beginAppearanceTransition:YES animated:YES];
[UIView animateWithDuration:0.2
delay:0.0
options:UIViewAnimationOptionCurveEaseInOut
animations:^{
origenViewcontroller.view.transform = CGAffineTransformMakeScale(1.5, 1.5);
origenViewcontroller.view.alpha = 0.0;
}
completion:^(BOOL finished){
[destinationViewcontroller.view removeFromSuperview];
[sourceViewcontroller dismissViewControllerAnimated:NO completion:NULL];
}];
}
好的,所以我认为我得到了它,我所做的是插入整个导航控制器视图在源视图的父视图和删除代码从父视图中删除目标视图和设置为YES的选项
- (void) perform {
UIViewController *origenViewcontroller = self.sourceViewController;
UIViewController *destinoViewcontroller = self.destinationViewController;
[origenViewcontroller.view.superview insertSubview:destinoViewcontroller.navigationController.view atIndex:0];
[UIView animateWithDuration:0.4
delay:0.0
options:UIViewAnimationOptionCurveEaseInOut
animations:^{
origenViewcontroller.view.transform = CGAffineTransformMakeScale(2.0, 2.0);
origenViewcontroller.view.alpha = 0.0;
}
completion:^(BOOL finished){
[origenViewcontroller dismissViewControllerAnimated:YES completion:NULL];
}];
}
我还是不确定这样做是否正确。
您也可以在UINavigationController
中嵌入destinationViewController
,并设置从sourceViewController
到Navigation Controller
的segue