[ iOS / Swift ] 解決 Navigation Bar 設為不半透明, push 後再返回會出現 UICollectionView、UITableView 被 Navigation Bar 遮住的問題
遇到的問題:
在上次解決 Navigation Bar 設為不半透明,添加 UISearchBar 後 push 會出現間距。 [前往文章]又出現新的問題,(圖ㄧ) 畫面 push 到 (圖二) 畫面後再返回 (圖ㄧ) 畫面後,會出現 UICollectionView、UITableView 會被 Navigation Bar 遮住。
解決的方法:
在 (圖一) 畫面將要顯示時加入對 navigationController view 重新佈局的方法。
override func viewWillAppear(_ animated: Bool) {
super.viewWillAppear(animated)
navigationController?.view.setNeedsLayout()
navigationController?.view.layoutIfNeeded()
}
解決後成果:
Navigation Bar 在設為不半透明時,(圖ㄧ) 畫面 push 到 (圖二) 畫面後再返回 (圖ㄧ) 畫面後,不會再出現 UICollectionView、UITableView 會被 Navigation Bar 遮住的情況發生。
修正 Bug:
後來發現在 (圖ㄧ) 畫面 push 到 (圖二) 畫面時,會出現間距。這是 Navigation Bar 設為不半透明才會出現的問題。
後來經過查詢後發現只要在 viewDidLoad 加入 extendedLayoutIncludesOpaqueBars 設為 true ,讓 View 可以在 Navigation Bar 設為不半透明時,可以擴展佈局到 Navigation Bar 底部,就可以解決這個佈局的 Bug。
override func viewDidLoad() {
super.viewDidLoad()
extendedLayoutIncludesOpaqueBars = true
}
// override func viewWillAppear(_ animated: Bool) {
// super.viewWillAppear(animated)
//
// navigationController?.view.setNeedsLayout()
// navigationController?.view.layoutIfNeeded()
// }
留言
張貼留言