我正在使用SLPagingView在我的 Swift 3 项目中拥有一个移动的NavigationBar。
控制器是SubClass
UIViewController
,ScrollView
。
我想使用UITabBarController
作为嵌入式UIViewControllers
之一。问题是,我的TabBar丢失了:
绿色控制器中的白条显示问题:
模拟器(iPhone 7 Plus)上的当前结果:
我猜TabBar
+ NavigationBar
的大小中缺少StatusBar
。在其他控制器中,我使用插入UITableViews
。如何在当前情况下显示UITabBar
?非常感谢帮助。
修改:
作为当前的解决方案,我有"解决方案"将TabBar
移动到所需位置。
class TabC: UITabBarController {
override func viewDidLoad() {
super.viewDidLoad()
let statusBarHeight = UIApplication.shared.statusBarFrame.height
let screenSize: CGRect = UIScreen.main.bounds
let tabBarFrame = CGRect(x: 0, y: (screenSize.height - 88 + statusBarHeight), width: screenSize.width, height: 0)
self.tabBar.frame = tabBarFrame
}
}
完美位置是NavigationBar
(2x 44 = 88
)减去statusBarHeight
的2倍。适用于iPhone 5S,6,7 Plus。每次都是同一个位置。
但为什么NavigationBar
(减去statusBarHeight
)的2倍,这是最好的方法吗?
答案 0 :(得分:1)
注意:根据与问题所有者的对话,在答案之下。
来自帖子:完美位置是NavigationBar的2倍(2x 44 = 88)。适用于iPhone 5S,6,7 Plus。每次都是相同的位置。但为什么要两次使用NavigationBar?
SLPagingView栏是一个自定义UIView,其作用类似于滑动导航栏。来自tabBarController.you以编程方式隐藏状态栏..
<强>计算:强>
根据您的SLPagingView控制器,没有navigationBar(44)和tabBar(44),这使得2 x 44 = 88 ..
从tabBarController计算应该如下
UIApplication.shared.statusBarFrame.height + UINavigationController().navigationBar.frame.height + UINavigationController().toolbar.frame.height + tailingSpace between the barView to tabBar(8 as he mentioned)