如何解决UICollectionView 使用 Accessibility
我正在尝试模仿当前快捷方式应用 UICollectionView 的行为,其中项目的默认显示为 2 列布局,但根据字体大小,它会更改为单列,其中单元格占满集合视图的宽度。
我正在向我的单元格标签添加动态类型,如果用户转到电话辅助功能并增加字体大小,我的标签也会增加,但现在标签字体增加但单元格仅在高度和我的集合视图中增加最终成为两列非常高的单元格。
我目前使用的是基本的 Flow Layout,没有进行任何自定义。我没有可以共享的有效代码或好的代码,但我正在寻找有关实现此目标的最佳方法的建议。
我的目标是 iOS 14,并使用 swift 5。
编辑 感谢 Witek 的回答,我能够使用 UICollectionViewCompositionalLayout 非常轻松地完成此操作,我什至不必订阅更改,只需在布局中查询 traitCollection 就足够了。这是我的最终结果:
private func createCompositionalLayout() -> UICollectionViewLayout {
let layout = UICollectionViewCompositionalLayout { (sectionIndex: Int,layoutEnvironment: NSCollectionLayoutEnvironment) -> NSCollectionLayoutSection? in
let columns = self.traitCollection.preferredContentSizeCategory.isAccessibilityCategory ? 1 : 2
// Define Item Size
let itemSize = NSCollectionLayoutSize(widthDimension: .fractionalWidth(1.0),heightDimension: .fractionalHeight(1.0))
// Create Item
let item = NSCollectionLayoutItem(layoutSize: itemSize)
// Define Group Size
let groupSize = NSCollectionLayoutSize(widthDimension: .fractionalWidth(1.0),heightDimension: .estimated(150.0))
// Create Group
let group = NSCollectionLayoutGroup.horizontal(layoutSize: groupSize,subitem: item,count: columns)
group.interItemSpacing = .fixed(10.0)
// Create Section
let section = NSCollectionLayoutSection(group: group)
// Configure Section
section.contentInsets = NSDirectionalEdgeInsets(top: 10.0,leading: 10.0,bottom: 10.0,trailing: 10.0)
section.interGroupSpacing = 10
return section
}
return layout
}
版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。