我正在创建一个顶级UITabBarController的应用程序,导航控制器作为其子级。当我从选项卡转换到第一个屏幕时,VC.view的帧是(0.0,0.0,375.0,618.0),然后当我转到另一个VC时,该VC的VC.view框架是(0.0 ,0.0,375.0,667.0)。由于差异为49,我假设这是因为TabBar的高度在第一次被考虑在内但不会在堆栈中进一步应用。我根据这些数字使用比例约束。是否有任何选项,因此它将始终删除tabBar高度或始终不会删除高度的选项。我只想要一个每个主要VC视图高度相等的设置。
将它放在所有后代VC的viewDidLoad()中修复了我的问题:
let size = CGSize(width: UIScreen.main.bounds.width, height: UIScreen.main.bounds.height - tabBarController!.tabBar.frame.height)
view.frame = CGRect(origin: .zero, size: size)
但这对我来说很惹人喜欢,并且更喜欢切换选项或设置。