需要实现:
在初始化VC之前,获得导航栏的边框尺寸(高度)
即,在:
1 2 | let mainViewVC = MainViewController() let mainNaviVC = UINavigationController(rootViewController:mainViewVC) |
之前,就获得导航栏高度。
搜:
swift get navigation bar frame
参考:
自己当前的第一次调用时的VC:
MainViewController
中的:
self.navigationController
是nil
-》所以没发去通过self.navigationController去获得对应的
self.navigationController?.navigationBar.frame
搜:
swift navigation bar height
参考:
在初始化VC之前,UINavigationBar的frame都是0:
1 2 | print( "UINavigationBar().frame=\(UINavigationBar().frame)" ) //UINavigationBar().frame=(0.0, 0.0, 0.0, 0.0) print( "UINavigationBar.appearance().frame=\(UINavigationBar.appearance().frame)" ) //UINavigationBar.appearance().frame=(0.0, 0.0, 0.0, 0.0) |
没法使用。
最后是,没有解决此处问题:
无奈只能:
在初始化VC后,该VC加入了导航栏,然后才能获得导航栏的边框(高度):
1 2 3 4 5 | //init main view controller let mainViewVC = MainViewController() let mainNaviVC = UINavigationController(rootViewController:mainViewVC) print( "mainNaviVC.navigationBar.frame=\(mainNaviVC.navigationBar.frame)" ) //mainNaviVC.navigationBar.frame=(0.0, 0.0, 375.0, 44.0) |
后来继续折腾:
搜:
swift get tabbar height
参考:
最后可以了:
此处,已经确保
self.tabBarController
是有值的:
1 | print( "self.tabBarController=\(self.tabBarController)" ) //self.tabBarController=Optional(<JianDao.MainViewController: 0x7f98a301ce00>) |
然后就可以通过tabBar去获得frame了:
1 | print( "self.tabBarController?.tabBar.frame=\(self.tabBarController?.tabBar.frame)" ) //self.tabBarController?.tabBar.frame=Optional((0.0, 618.0, 375.0, 49.0)) |