如何解决使用UICollectionViewCompositionalLayout时如何根据屏幕宽度更改项目大小
在使用UICollectionViewCompositionalLayout
的集合视图中,当视图宽度较小时,我希望项目尺寸为85x85,否则为100x100。但这是在创建布局时指定的,因此,当屏幕宽度发生变化(例如旋转iPhone或更改iPad上的拆分视图配置)时,如何更改布局大小?
collectionView.collectionViewLayout = {
let size = CGFloat(view.bounds.width < 375 ? 85 : 100)
let itemSize = NSCollectionLayoutSize(widthDimension: .absolute(size),heightDimension: .absolute(size))
let item = NSCollectionLayoutItem(layoutSize: itemSize)
let groupSize = NSCollectionLayoutSize(widthDimension: .fractionalWidth(1),heightDimension: .absolute(size))
let group = NSCollectionLayoutGroup.horizontal(layoutSize: groupSize,subitems: [item])
let section = NSCollectionLayoutSection(group: group)
return UICollectionViewCompositionalLayout(section: section)
}()
解决方法
代替调用UICollectionViewCompositionalLayout(section:)
(这是设置部分的静态的方式),请使用其他初始化程序init(sectionProvider:)
,在其中传递 section提供程序功能。您的函数现在将环境作为参数(包括集合视图的大小)作为参数接收,因此现在您可以根据环境实时做出决定。如果环境发生变化,您会再次被呼叫,因此,您可以处理应用程序大小更改的问题(例如在进入分屏模式的iPad中)。
版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。