我正在ViewController中构建一个自定义菜单,它包含两个容器视图控制器。
顶视图是UICollectionViewController(流程布局/水平滚动方向)
底视图是UIPageViewController
Everthing工作正常。但是,当我嵌入导航控制器时,collectionviewCell不会按预期显示任何想法?
另外,我发现嵌入导航控制器时,不会调用以下功能。
func collectionView(_ collectionView: UICollectionView, layout collectionViewLayout: UICollectionViewLayout, sizeForItemAt indexPath: IndexPath) -> CGSize {}
func collectionView(_ collectionView: UICollectionView, cellForItemAt indexPath: IndexPath) -> UICollectionViewCell { }
没有嵌入式导航控制器
使用嵌入式导航控制器
答案 0 :(得分:1)
在包含集合视图的子视图控制器中,使用viewDidLoad
和viewDidLayoutSubviews
方法添加代码,如下所示。它应该解决你的问题。
override func viewDidLoad() {
super.viewDidLoad()
self.automaticallyAdjustsScrollViewInsets = false
}
override func viewWillLayoutSubviews() {
super.viewWillLayoutSubviews()
self.collectionView.contentInset = UIEdgeInsetsMake(self.topLayoutGuide.length,
0.0,
self.bottomLayoutGuide.length,
0.0)
}
原因是,默认情况下,UIViewController
实例通过更新contentInset
子类的UIScrollView
来响应在导航控制器内部(在您的情况下是UICollectionView)。所以这里你只是说不要自动更新插图。