我有一個在我的視圖控制器編程方式創建一個表視圖:處理UITableView的旋轉而自動佈局
/// Configures the table view used to display systems.
private func configureTableView() {
guard let navigationBarHeight = navigationController?.navigationBar.frame.height else { fatalError("Invalid height for navigation bar") }
let statusBarHeight = UIApplication.shared.statusBarFrame.height
let totalHeight = navigationBarHeight + statusBarHeight
view.insertSubview(tableView, aboveSubview: noSystemsLabel)
tableView.translatesAutoresizingMaskIntoConstraints = false
tableView.topAnchor.constraint(equalTo: view.topAnchor, constant: totalHeight).isActive = true
tableView.rightAnchor.constraint(equalTo: view.rightAnchor).isActive = true
tableView.bottomAnchor.constraint(equalTo: view.bottomAnchor).isActive = true
tableView.leftAnchor.constraint(equalTo: view.leftAnchor).isActive = true
}
一切看起來好這裏:
然後,我轉動我的設備並且分隔符不會跨越表視圖的寬度另外,當我滾動表視圖時,頂部單元格會在到達導航欄之前被切斷:
旋轉回肖像後,表視圖似乎更高,從而導致頂部細胞會被裁切:
我一直在使用這下面的方法有不同的解決方案嘗試,如重新配置coordinator
的動畫內的限制,但我只是無法弄清楚如何得到它正常工作:
override func viewWillTransition(to size: CGSize, with coordinator: UIViewControllerTransitionCoordinator) {
super.viewWillTransition(to: size, with: coordinator)
}
我試圖找出如何使用這種方法,但我想我不是很瞭解它。
如何使用我的表格視圖配置自動佈局,使其在旋轉設備時尺寸和位置適當?
肖像:
景觀:
更新
針對Aerows答案,我仍然實現所提出的解決方案後,越來越怪異結果
更新 - 工作液
繼Aerow的建議下,我用topLayoutGuide.bottomAnchor
,這解決了我的問題。
我實現了您的解決方案,但這會導致表視圖始終處於導航欄下。 –
您是否還手動添加了「導航欄」,還是繼承自「navigationController」? – Aerows
'navigationBar'繼承自Interface Builder中的'UINavigationController'。 –