iOS界面跳转时导航栏和tabBar的隐藏与显示功能

iOS应用中,界面跳转时,导航栏和tabBar的隐藏与显示是一个比较常见的需求。主要有以下几种方式实现:

1. 设置隐藏属性在跳转前,设置目标视图控制器hidesBottomBarWhenPushedhidesNavigationBarDuringPresentation属性来隐藏tabBar或导航栏。在跳转返回时,它们又会自动显示。

let vc = storyboard.instantiateViewController(withIdentifier: "NextVC")
vc.hidesBottomBarWhenPushed = true     // 隐藏tabBar
vc.hidesNavigationBarDuringPresentation = true // 隐藏导航栏
navigationController?.pushViewController(vc, animated: true)

2. 设置根视图在跳转的目标控制器中,手动设置根视图的frame来隐藏tabBar和导航栏。

override func viewDidLoad() {
    super.viewDidLoad()
    tabBarController?.tabBar.isHidden = true     // 隐藏tabBar
    navigationItem.hidesBackButton = true        // 隐藏导航栏的返回按钮
    navigationController?.navigationBar.isHidden = true // 隐藏整个导航栏
}

在返回时,再将它们显示出来。

3. 使用自定义转场动画通过自定义push转场动画和pop转场动画,可以在动画过程中自行控制tabBar和导航栏的显示状态,实现平滑转换的效果。

// push动画
override func pushViewController(_ viewController: UIViewController, animated: Bool) {
    tabBarController?.tabBar.isHidden = true
    viewController.view.frame = CGRect(x: 0, y: self.view.frame.height, width: self.view.frame.width, height: self.view.frame.height)
    self.view.addSubview(viewController.view)
    
    // 自定义动画
    ...
} 

// pop动画  
override func popViewController(animated: Bool) -> UIViewController? {
    // 自定义动画
    ...
    tabBarController?.tabBar.isHidden = false
}

以上三种方法可以灵活实现导航栏和tabBar的显示与隐藏控制。

© 版权声明
THE END
喜欢就支持一下吧
点赞13 分享
评论 抢沙发

请登录后发表评论