tabbar隐藏动画-swift

先看看效果图吧,看是否是你们想要的效果:


iPhone X

6S

其实思路很简单,首先在继承自UITabbarController的MainTabbarController中加入一个方法,用动画的方式改变tabbar的y坐标.

  func hideTabbar(hidden: Bool) {
        UIView.animate(withDuration: 0.2) {
            if hidden {
                var frame = self.tabBar.frame
                frame.origin.y = ScreenHeight
                self.tabBar.frame = frame
            } else {
                var frame = self.tabBar.frame
                frame.origin.y = ScreenHeight - KTabBarHeight
                self.tabBar.frame = frame
            }
        }
    }

其中KTabBarHeight代表tabbar高度用以适配iPhone X.
然后在继承自UINavigationController的基类中做push操作,当从首页往下一级页面push的时候调用tabbar的隐藏动画,如下:

 override func pushViewController(_ viewController: UIViewController, animated: Bool){
        if (self.viewControllers.count == 1) {
        let tabbarVC : MainTabBarController = self.tabBarController as! MainTabBarController
            tabbarVC.hideTabbar(hidden: true)
        }
        super .pushViewController(viewController, animated: animated)
    }

最后在继承自UIViewController的基类中重写viewDidAppear方法,当首页已经出现后调用tabbar的显示动画.如下:

 override func viewDidAppear(_ animated: Bool) {
        super.viewDidAppear(animated)
        let tabbarVC : MainTabBarController = self.tabBarController as! MainTabBarController
        if (self.navigationController?.viewControllers.count)! <= 1 {
            tabbarVC.hideTabbar(hidden: false)
        }
    }

大致思路就是这样,如果有什么更好的方法欢迎留言.

最近写了个开源项目高仿MONO,希望大家可以看看给出一点建议,欢迎给个STAR✨.

©著作权归作者所有,转载或内容合作请联系作者
平台声明:文章内容(如有图片或视频亦包括在内)由作者上传并发布,文章内容仅代表作者本人观点,简书系信息发布平台,仅提供信息存储服务。

推荐阅读更多精彩内容

  • 发现 关注 消息 iOS 第三方库、插件、知名博客总结 作者大灰狼的小绵羊哥哥关注 2017.06.26 09:4...
    肇东周阅读 12,206评论 4 61
  • 1、通过CocoaPods安装项目名称项目信息 AFNetworking网络请求组件 FMDB本地数据库组件 SD...
    阳明AGI阅读 16,008评论 3 119
  • 宝贝13个月左右,就开始在睡前听我读绘本。我深知自己的启蒙时间不算早,因为很多爸妈都是从怀孕阶段开始,或听古典...
    银河萤火虫阅读 655评论 0 1
  • 三体,失控,系统之美,认知盈余,拆掉思维里的墙。 成甲的好好学习,时间简史,上帝掷骰子吗?断舍离,高效能人士七个习...
    晌晌阅读 238评论 0 0
  • 点击这里看视频
    沙澧晨风阅读 89评论 0 0