![](/img/trans.png)
[英]In IOS 6.0 : UIBarButton in bottom toolbar disappears after presenting and dismissing modal view controller
[英]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.