gpt4 book ai didi

ios - iOS 10 中的 collectionViewContentSize 使用自调整单元格

转载 作者:技术小花猫 更新时间:2023-10-29 11:14:26 25 4
gpt4 key购买 nike

在 iOS 10 之前,我有一个自动调整表格 View ,它仅由一个 UICollectionView 和使用标准 UICollectionViewFlowLayout 的自动调整单元格组成。 Collection View 单元格使用自动布局调整大小。为了让表格单元格自行调整大小,我必须找到 Collection View 的内容大小,并在表格单元格的 systemLayoutSizeFittingSize:withHorizo​​ntalFittingPriority:verticalFittingPriority: 中使用它。

我还发现调用 collectionView.collectionViewLayout.collectionViewContentSize 使用的是 estimatedItemSize 而不是正确大小的单元格大小,除非我调用 collectionView layoutIfNeeded。这导致 systemLayoutSizeFittingSize 为:

- (CGSize) systemLayoutSizeFittingSize:(CGSize)targetSize withHorizontalFittingPriority:(UILayoutPriority)horizontalFittingPriority verticalFittingPriority:(UILayoutPriority)verticalFittingPriority
{
self.collectionView.frame = CGRectMake(0, 0, targetSize.width, FLT_MAX);
[self.collectionView layoutIfNeeded];

CGSize collectionViewContentSize = self.collectionView.collectionViewLayout.collectionViewContentSize;
CGFloat verticalPadding = fabs(self.collectionViewTopPaddingConstraint.constant) + fabs(self.collectionViewBottomPaddingConstraint.constant);
CGSize cellSize = CGSizeMake(collectionViewContentSize.width, collectionViewContentSize.height + verticalPadding);

return cellSize;
}

调用 layoutIfNeeded 现在导致 *** 断言失败 -[_UIFlowLayoutSection computeLayoutInRect:forSection:invalidating:invalidationContext:],/BuildRoot/Library/Caches/com.apple.xbs/Sources/UIKit_Sim/UIKit -3599.6/UIFlowLayoutSupport.m:823

我在 systemLayoutSizeFittingSize 中调用 layoutIfNeeded 是否违反了某些道德规则?在使用自调整单元格时,是否有更好的方法来计算 Collection View 的内容大小?我宁愿不必从自动布局转移到在代码中进行这些尺寸计算,但这肯定是最糟糕的选择。

最佳答案

这是仅适用于 iPhone Plus 设备的 iOS10 中的一些奇怪错误。我遇到了同样的问题,我的解决方案是像这样调用 layoutIfNeeded:

func numberOfSections(in collectionView: UICollectionView) -> Int {
collectionView.layoutIfNeeded() // Patch: only to solve UIKit crash on Plus models
return 1
}

在不同的 UICollectionViewDataSources 方法中做同样的事情同样有效

关于ios - iOS 10 中的 collectionViewContentSize 使用自调整单元格,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/39498503/

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