需要实现:
在初始化VC之前,获得导航栏的边框尺寸(高度)
即,在:
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:
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加入了导航栏,然后才能获得导航栏的边框(高度):
//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
是有值的:
print("self.tabBarController=\(self.tabBarController)") //self.tabBarController=Optional(<JianDao.MainViewController: 0x7f98a301ce00>)
然后就可以通过tabBar去获得frame了:
print("self.tabBarController?.tabBar.frame=\(self.tabBarController?.tabBar.frame)") //self.tabBarController?.tabBar.frame=Optional((0.0, 618.0, 375.0, 49.0))