所以我遇到了一些奇怪的(在我看来)问题。我有一个标准的UINavigationController与根UIViewController。
我正在以编程方式向视图控制器添加UITableView。当我设置表格视图的框架时,我将其设置为:
tableView.frame = CGRect(x: 0, y: 0, width: self.view.frame.width, height: self.view.frame.height)
当我运行模拟器时,有时桌面视图完美定位 - 坐在导航栏下方。但是,有时(看似随意)桌面视图位于导航栏下方的屏幕顶部。
我试图将tableview的Y坐标更改为
(self.navigationController?.navigationBar.frame.height)!
但现在相反的情况发生了:有时桌面视图定位正确,但有时候导航栏下面会出现导航条大小的间隙,在桌面视图上方。
我很遗憾发生了什么 - 也许这与创建导航栏时有关?
提前致谢。
答案 0 :(得分:0)
尝试以下代码...在Xcode 8中测试它有效....你提到了navBar下出现的间隙。因为你没有在你的代码中输入statusBar高度。
override func viewDidLoad() {
super.viewDidLoad()
// Do any additional setup after loading the view, typically from a nib.
yourTableView.frame = CGRect(x: 0, y: -(UINavigationController().navigationBar.frame.height + UIApplication.shared.statusBarFrame.size.height), width: view.frame.width, height: view.frame.height + (UINavigationController().navigationBar.frame.height + UIApplication.shared.statusBarFrame.size.height))
print((UINavigationController().navigationBar.frame.height)) // 44.0
print(UIApplication.shared.statusBarFrame.size.height) // 20.0
//You can include this code in viewDidAppears.if your view has a transition...
}
上面的代码会将你的tableview放在navigationBar.Hope下面,这有助于......