gpt4 book ai didi

swift - 使用 Storyboard将 Collection View 布局设置为组合布局

转载 作者:行者123 更新时间:2023-12-05 07:12:19 24 4
gpt4 key购买 nike

我如何才能将 Collection View 流布局更改为 Storyboard 中的组合布局。所以我有一个包含 3 个导航 Controller 的 TabBarController 类,我从 Storyboard中初始化的导航 Controller 如下所示。

//Storyboard is an enum that contains strings IDs that belong to controllers from main storyboard.
private func createNewViewController(storyboardIdentifier: Storyboard.Controller) -> UIViewController {
let controller = UIStoryboard.init(name: "Main", bundle: nil).instantiateViewController(withIdentifier: storyboardIdentifier.indentifer)

return controller
}

这就是我将 Controller 添加到标签栏 Controller 的方式。

viewControllers = [
SearchCollectionVC(),
//createNewViewController(storyboardIdentifier: .searchNav),
createNewViewController(storyboardIdentifier: .todayNav),
createNewViewController(storyboardIdentifier: .appsNav)

]

如果我尝试添加带有注释行的 SearchCollectionVC,我的应用程序就会崩溃。它在 SearchCollectionVC 所需的初始化中执行 fatalError() 行。这就是我创建布局的方式。

init() {
super.init(collectionViewLayout: SearchCollectionVC.createCollectionLayout())
}


required init?(coder: NSCoder) {
fatalError("init(coder:) has not been implemented")
}

static func createCollectionLayout() -> UICollectionViewCompositionalLayout {
let itemSize = NSCollectionLayoutSize(widthDimension: .fractionalWidth(1), heightDimension: .fractionalHeight(1))
let item = NSCollectionLayoutItem(layoutSize: itemSize)

let grupSize = NSCollectionLayoutSize(widthDimension: .fractionalWidth(1), heightDimension: .absolute(250))
let group = NSCollectionLayoutGroup.horizontal(layoutSize: grupSize, subitems: [item])

let section = NSCollectionLayoutSection(group: group)
section.interGroupSpacing = 20

let layout = UICollectionViewCompositionalLayout(section: section)

return layout
}

现在我尝试在 SearchCollectionVC viewDidLoad() 中执行此操作。

collectionView.collectionViewLayout = SearchCollectionVC.createCollectionLayout()

这适用于注释行,没有 init。问题是当我旋转屏幕时会发生这种情况。

enter image description here

当我使用 SearchCollectionVC() 添加 Controller 和使用 init.现在,我不知道为什么会这样。有人可以告诉我如何初始化 Storyboard Controller 并将布局更改为我创建的组合布局,而不会将 Collection View 切成两半。谢谢

最佳答案

刚知道怎么做。必须像这样创建一个新的 Collection View 。

 collectionView = UICollectionView(frame: view.bounds, collectionViewLayout: SearchCollectionVC.createCollectionLayout())

关于swift - 使用 Storyboard将 Collection View 布局设置为组合布局,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/60445624/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com