将 UITabBarController 插入容器视图时隐藏 UITabBar
Hidden UITabBar while UITabBarController is inserted into container view
出于某种原因,我需要将 UITabBarController
插入容器视图。
当 UITabBarController
本身出现时(VC 与容器视图被跳过)它完美地工作并且正在显示所有内容。但是当我将它插入 UIView
时,如下所示 UITabBar
存在于 Debug View Hierarchy 中,但在应用程序中不可见。在这两种情况下,对象检查器中 UITabBar 的属性是相同的。
private var tabBar: TabBarController!
@IBOutlet private var tabBarContainer: UIView!
...
addChildViewController(tabBar)
tabBarContainer.addSubview(tabBar.view)
tabBar.didMove(toParentViewController: self)
好的,我已经弄明白了。
有两种修复方法:
1:
addChildViewController(tabBar)
tabBar.view.frame = tabBarContainer.bounds
tabBarContainer.addSubview(tabBar.view)
tabBar.didMove(toParentViewController: self)
2:
addChildViewController(tabBar)
tabBarContainer.addSubview(tabBar.view)
tabBar.view.translatesAutoresizingMaskIntoConstraints = false
tabBarContainer.translatesAutoresizingMaskIntoConstraints = false
tabBarContainer.snp.makeConstraints { make in
make.bottom.equalTo(tabBar.view.snp.bottom)
make.top.equalTo(tabBar.view.snp.top)
make.left.equalTo(tabBar.view.snp.left)
make.right.equalTo(tabBar.view.snp.right)
}
出于某种原因,我需要将 UITabBarController
插入容器视图。
当 UITabBarController
本身出现时(VC 与容器视图被跳过)它完美地工作并且正在显示所有内容。但是当我将它插入 UIView
时,如下所示 UITabBar
存在于 Debug View Hierarchy 中,但在应用程序中不可见。在这两种情况下,对象检查器中 UITabBar 的属性是相同的。
private var tabBar: TabBarController!
@IBOutlet private var tabBarContainer: UIView!
...
addChildViewController(tabBar)
tabBarContainer.addSubview(tabBar.view)
tabBar.didMove(toParentViewController: self)
好的,我已经弄明白了。 有两种修复方法:
1:
addChildViewController(tabBar)
tabBar.view.frame = tabBarContainer.bounds
tabBarContainer.addSubview(tabBar.view)
tabBar.didMove(toParentViewController: self)
2:
addChildViewController(tabBar)
tabBarContainer.addSubview(tabBar.view)
tabBar.view.translatesAutoresizingMaskIntoConstraints = false
tabBarContainer.translatesAutoresizingMaskIntoConstraints = false
tabBarContainer.snp.makeConstraints { make in
make.bottom.equalTo(tabBar.view.snp.bottom)
make.top.equalTo(tabBar.view.snp.top)
make.left.equalTo(tabBar.view.snp.left)
make.right.equalTo(tabBar.view.snp.right)
}