Swift iOS -在屏幕旋转时调整collectionLayout的大小



我有一个集合视图(基本上UICollectionView)和集合布局(UICollectionViewFlowLayout)。我正试图找到一种方法来调整基于设备方向ItemSize。然而,我找不到一个方法。这个类只从UIView继承。

open override func layoutSubviews() {
super.layoutSubviews()
//collectionLayout.invalidateLayout()
if UIScreen.main.bounds.width < UIScreen.main.bounds.height { //portrait
collectionLayout.itemSize = CGSize(width: 50, height: 50)
} else {
collectionLayout.itemSize = CGSize(width: 100, height: 100)
}
collectionLayout.collectionView?.layoutIfNeeded()
if collectionView != nil {
collectionView.layoutIfNeeded()
}

我也试图使用invalidateLayout()上的collectionLayout,但也没有改变。谢谢你的建议。

您需要使用约束才能使其工作。此外,您还需要使用SIZE CLASSES。

这是一个教程,它是在swift 4中,但原理是一样的。

https://www.youtube.com/watch?v=VLh0RIQmCr4

这里是另一个链接到更多的教程,你需要的

https://www.hackingwithswift.com/example-code/uikit/what-are-size-classes

相关内容

  • 没有找到相关文章

最新更新