呈现模式视图后,标签栏中的UIButton消失

问题描述

我有一个CollectionView,从那里我可以对TabBarController进行模态搜索(全屏显示)。在TabBarController的tabBar中间是一个UIButton,它将模式视图推到TabBarController上方(不是全屏)。 从TabBarController推送的模式视图消失后,UIButton在tabBar中消失(如图片所示)

在打开模式视图之前

before opening modal view

解雇后

after dismissal

当第二个模态呈现的ViewController全屏显示时,这不会不会发生。以下设置可以正常运行:

CollectionView --modal全屏-> TabBarController --modal全屏-> anotherViewController

当我将第一个VC嵌入NavigationController并在Navigationstack中推送TabBarController时,也不会发生这种情况。这在这里也可以正常工作:

NavigationView(CollectionView)-按钮-> 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
    
}

相关问答

错误1:Request method ‘DELETE‘ not supported 错误还原:...
错误1:启动docker镜像时报错:Error response from daemon:...
错误1:private field ‘xxx‘ is never assigned 按Alt...
报错如下,通过源不能下载,最后警告pip需升级版本 Requirem...