• 设为首页
  • 点击收藏
  • 手机版
    手机扫一扫访问
    迪恩网络手机版
  • 关注官方公众号
    微信扫一扫关注
    公众号

ios - 导航栏在自定义展开转场的动画中不可见

[复制链接]
菜鸟教程小白 发表于 2022-12-12 23:10:39 | 显示全部楼层 |阅读模式 打印 上一主题 下一主题

我在导航 Controller 中使用自定义展开转场,在转场动画中,导航栏在动画期间不可见,当动画结束时导航栏“弹出”。 ¿如何在动画期间保持导航栏的可见性?

更多细节:

我在导航栏中有一个按钮调用模态视图这个动画按预期执行,新 View 有一个按钮来触发展开segue动画 View 增长和消失,而这个动画正在执行导航栏在动画完成之前,目标 View Controller 不可见。

这是我用于自定义转场的代码。

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

好的,我想我明白了,我所做的是在源 View 的父 View 中插入 整个导航 Controller View ,并删除代码以 从superview 并将 dismissViewControllerAnimated 的选项设置为 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];
                     }];
}

我仍然不确定这是否是正确的做法。



Best Answer-推荐答案


您也可以将 destinationViewController 嵌入到 UINavigationController 中,并将您的 segue 从 sourceViewController 设置为 Navigation Controller.

关于ios - 导航栏在自定义展开转场的动画中不可见,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/24332248/

回复

使用道具 举报

懒得打字嘛,点击右侧快捷回复 【右侧内容,后台自定义】
您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

关注0

粉丝2

帖子830918

发布主题
阅读排行 更多
广告位

扫描微信二维码

查看手机版网站

随时了解更新最新资讯

139-2527-9053

在线客服(服务时间 9:00~18:00)

在线QQ客服
地址:深圳市南山区西丽大学城创智工业园
电邮:jeky_zhao#qq.com
移动电话:139-2527-9053

Powered by 互联科技 X3.4© 2001-2213 极客世界.|Sitemap