问题描述
在https://stackoverflow.com/a/51231881/72437中,它展示了如何通过使用UICollectionView
UICollectionViewCompositionalLayout
的单元格中实现全宽,动态高度
我们希望在水平UICollectionView
上达到要求
- 固定高度44
- 最小宽度44
- 随着内容的增长,宽度应动态放大
这是我们的解决方案的样子
class MenuTabsView: UIView,UICollectionViewDelegate,UICollectionViewDataSource,UICollectionViewDelegateFlowLayout {
lazy var collView: UICollectionView = {
let itemSize = NSCollectionLayoutSize(
widthDimension: NSCollectionLayoutDimension.estimated(44),heightDimension: NSCollectionLayoutDimension.fractionalHeight(1.0)
)
let item = NSCollectionLayoutItem(
layoutSize: itemSize
)
item.contentInsets = NSDirectionalEdgeInsets(
top: 0,leading: 0,bottom: 0,trailing: 1
)
let group = NSCollectionLayoutGroup.horizontal(
layoutSize: itemSize,subitem: item,count: 1
)
let section = NSCollectionLayoutSection(group: group)
let configuration = UICollectionViewCompositionalLayoutConfiguration()
configuration.scrollDirection = .horizontal
let layout = UICollectionViewCompositionalLayout(section: section,configuration: configuration)
let cv = UICollectionView.init(frame: CGRect.zero,collectionViewLayout: layout)
cv.showsHorizontalScrollIndicator = false
cv.backgroundColor = .white
cv.delegate = self
cv.dataSource = self
return cv
}()
我们期望通过使用widthDimension: NSCollectionLayoutDimension.estimated(44)
,这是使像元宽度动态增长的关键。但是,这不符合预期。看起来像
我可以知道,如何使用UICollectionViewCompositionalLayout
解决此问题?完整的可行项目位于https://github.com/yccheok/PageViewControllerWithTabs/tree/UICollectionViewCompositionalLayout
p / s
我们希望避免使用UICollectionViewDelegateFlowLayout method collectionView(_:layout:sizeForItemAt:)
。那样,我们的单元格可能会变得复杂,除了UILabel
之外,它还将包含其他视图。必须手动计算内容大小,将使解决方案不灵活且容易出错。
解决方法
暂无找到可以解决该程序问题的有效方法,小编努力寻找整理中!
如果你已经找到好的解决方法,欢迎将解决方案带上本链接一起发送给小编。
小编邮箱:dio#foxmail.com (将#修改为@)