簡體   English   中英

顯示模態視圖后,標簽欄中的 UIButton 消失

[英]UIButton in tabbar disappears after presenting a modal view

我有一個 CollectionView,從那里我有一個模態轉場(全屏顯示)到 TabBarController。 在 TabBarController 的 tabBar 中間是一個 UIButton,它將模態視圖推送到 TabBarController 上方(不是全屏)。 從 TabBarController 推送的模態視圖被解除后,UIButton 在 tabBar 中消失(如圖所示)

在打開模態視圖之前

在打開模態視圖之前

解雇后

解雇后

不會發生,當第二模態呈現視圖控制器顯示全屏。 以下設置工作正常:

CollectionView --modal fullscreen--> TabBarController --modal fullscreen--> anotherViewController

當我將第一個 VC 嵌入 NavigationController 並將 TabBarController 推送到導航堆棧中時,這也不會發生。 這在這里也按預期工作:

NavigationView(CollectionView) --pushes--> TabBarController --modal--> anotherViewController

問題僅顯示,當我以模態方式呈現 ViewController 時,而不是全屏顯示在另一個以模態方式顯示的 ViewController 上方。 現在我想了解為什么會發生這種情況。

這是我設置 TabBar 的方式:

override func viewWillLayoutSubviews() {
    super.viewWillLayoutSubviews()
    setupTabBarAppearance()
    setupTabBarShadow()
    setupTabBar()
}
 private func setupTabBar() {
    middleButtonView.center = CGPoint(x: tabBar.frame.width / 2, y: 10)
    middleButton.center = CGPoint(x: middleButtonView.frame.width / 2, y: middleButtonView.frame.width / 2)
    middleButtonView.addSubview(middleButton)
    tabBar.addSubview(middleButtonView)
}

這就是我展示 ModalViewController 的方式:

@objc private func showController() {

    let viewController = TableViewController()
    viewController.modalPresentationStyle = .automatic
    self.present(viewController, animated: true)
}

我在呈現的控制器中關閉呈現的 ViewController:

  @objc func dismissController(){
    self.dismiss(animated: true, completion: nil) 
}

我很感謝提供的任何幫助

改變約束確實有幫助。 我的設置現在看起來像這樣,它就像一個魅力。 感謝盧卡斯的想法! 但我仍然不知道為什么需要改變。

private func setupTabBar() {
  
    middleButtonView.addSubview(middleButton)
    tabBar.addSubview(middleButtonView)
    
    middleButtonView.centerXAnchor.constraint(equalTo: tabBar.centerXAnchor, constant: 0).isActive = true
    middleButtonView.centerYAnchor.constraint(equalTo: tabBar.centerYAnchor, constant: -30).isActive = true
    middleButtonView.heightAnchor.constraint(equalToConstant: buttonViewRadius * 2).isActive = true
    middleButtonView.widthAnchor.constraint(equalToConstant: buttonViewRadius * 2).isActive = true
    
    middleButton.centerYAnchor.constraint(equalTo: middleButtonView.centerYAnchor, constant: 0).isActive = true
    middleButton.centerXAnchor.constraint(equalTo: middleButtonView.centerXAnchor, constant: 0).isActive = true
    middleButton.heightAnchor.constraint(equalToConstant: buttonRadius * 2).isActive = true
    middleButton.widthAnchor.constraint(equalToConstant: buttonRadius * 2).isActive = true
    
}

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM