UINavigationController自定义navigationbar的动画

发布于 2022-08-24 23:44:16 字数 159 浏览 20 评论 0

假如前一个页面的navigationbar隐藏,push到栈里面的下一个页面需要显示navigationbar,如果要实现push过程中,navigationbar从屏幕上端从上到下滑进屏幕,pop到上一级的时候,navigationbar从下到上滑出屏幕,是不是不能用原生的navigationbar?

如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。

扫码二维码加入Web技术交流群

发布评论

需要 登录 才能够评论, 你可以免费 注册 一个本站的账号。

评论(2

若相惜即相离 2022-08-31 23:44:16

如果你需要比较复杂的NavigationBar动画或样式,建议你自定义NavigationBar
说道你你问题里的这个方法,我想最直接的办法还是重写UINavigationController

芯好空 2022-08-31 23:44:16

这个不就是viewcontroller的UIModalTransitionStyleFlipHorizontal这种方式?nc可以做容器包含vc,这样两个vc就可以实现。

[self.navigationController setNavigationBarHidden:NO animated:YES]; 这个可以得到想要的效果,未自定义,不知是否适合楼主要求。

然后就是自定义navigationbar。
花了几分钟写了个简单方法实现自定义动画
如何让navigationbar上下移动,修改flag即可。

    __block BOOL flag = YES; //0 up 1 down
    
    UINavigationBar *navbar = [[self navigationController] navigationBar];
    
    [UIView animateWithDuration:0.3 animations:^(void)
     {
         if ([[UIApplication sharedApplication] respondsToSelector:@selector(setStatusBarHidden:withAnimation:)]) {
             [[UIApplication sharedApplication] setStatusBarHidden:flag withAnimation:NO];
         } 
         if (flag) {
             navbar.frame = CGRectMake(0, -44, 320, 44); 
         }
         else {
             navbar.frame = CGRectMake(0, 20, 320, 44);
         }
        
     }];
~没有更多了~
我们使用 Cookies 和其他技术来定制您的体验包括您的登录状态等。通过阅读我们的 隐私政策 了解更多相关信息。 单击 接受 或继续使用网站,即表示您同意使用 Cookies 和您的相关数据。
原文