繁体   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