代码之家  ›  专栏  ›  技术社区  ›  coinhndp

当导航按钮按下swift 4时隐藏自定义中间按钮

  •  0
  • coinhndp  · 技术社区  · 6 年前

    Swift 3 - How do I create a prominent button on a tab bar (e.g. camera button)

    我想隐藏底部栏导航时推一个新的屏幕。我尝试了这个,但它不起作用,因为从来没有调用过ViewDidEnglishe

    override func viewDidDisappear(_ animated: Bool) {
        super.viewDidAppear(animated)
        hidesBottomBarWhenPushed = true
        centerButton.isHidden = true
    }
    

    你们能告诉我怎么做到吗?

    2 回复  |  直到 6 年前
        1
  •  0
  •   Rikesh Subedi    6 年前

    你好像打错了。使用super.ViewDid消失()

    override func viewDidDisappear(_ animated: Bool) {
        //super.viewDidAppear(animated)
        super.viewDidDisappear(animated)
        hidesBottomBarWhenPushed = true
        centerButton.isHidden = true
    }
    
        2
  •  0
  •   André Slotta    5 年前

    推。重要的是要注意,在 viewDidLoad

    class PushedVC: UIViewController {
    
        required init?(coder aDecoder: NSCoder) {
            super.init(coder: aDecoder)
            sharedInit()
        }
    
        override init(nibName nibNameOrNil: String?, bundle nibBundleOrNil: Bundle?) {
            super.init(nibName: nibNameOrNil, bundle: nibBundleOrNil)
            sharedInit()
        }
    
        private func sharedInit() {
            hidesBottomBarWhenPushed = true
        }
    
    }
    

    当然你也可以检查一下复选标记 Hide Bottom Bar on Push 在使用序列图像板时用于特定的视图控制器。

    在这种方法中,为了确保中心按钮与选项卡栏一起隐藏/显示,您必须将其添加为选项卡栏的子视图 UITabBar hitTest 要使其完全可点击(当然,仅当按钮超出选项卡栏的框架时才需要):

    class TabBar: UITabBar {
    
        let centerButton = ...
    
        // ...
    
        override func hitTest(_ point: CGPoint, with event: UIEvent?) -> UIView? {
            if centerButton.frame.contains(point) {
                return centerButton
            }
    
            return super.hitTest(point, with: event)
        }
    
        // ...
    
    }