lor*_*los 13 ios autolayout uicollectionview swift ios10
我已经创建了一个UICollectionView,可以在模拟器和真实设备上的iPhone 5s/SE/6/6s/7等小型设备上正常工作,但是当涉及iPhone 6Plus,iPhone 7Plus和任何iPad版本时,我都有一个奇怪的情况.它在真实设备上工作正常,但它在模拟器中崩溃,出现以下错误:
断言失败 - [_ UIFlowLayoutSection computeLayoutInRect:forSection:invalidating:invalidationContext:],/ BuildRoot/Library/Cache/com.apple.xbs/Source/UIKit_Sim/UIKit-3600.5.2/UIFlowLayoutSupport.m:823
因未捕获的异常'NSInternalInconsistencyException'而终止应用程序,原因:'UICollectionViewFlowLayout内部错误'
到目前为止我发现的是,如果我删除了estimatedItemSize它工作正常,但自动布局不再,但如果我启用它,它会在模拟器中崩溃.
我使用的是最新的Xcode版本和iOS 10.
任何想法为什么崩溃?
Yoi*_*aya 25
invalidateLayout布局之前调用是此问题的解决方法.
在UIViewController子类中:
override func viewWillLayoutSubviews() {
super.viewWillLayoutSubviews()
collectionView.collectionViewLayout.invalidateLayout()
}
Run Code Online (Sandbox Code Playgroud)
或在UIView子类中:
override func layoutSubviews() {
super.layoutSubviews()
collectionView.collectionViewLayout.invalidateLayout()
}
Run Code Online (Sandbox Code Playgroud)
这是 iOS10 中仅适用于 iPhone Plus 设备的一些奇怪错误。我遇到了同样的问题,我的解决方案是像这样调用layoutIfNeeded:
Run Code Online (Sandbox Code Playgroud)func numberOfSections(in collectionView: UICollectionView) -> Int { collectionView.layoutIfNeeded() // Patch: only to solve UIKit crash on Plus models return 1 }在不同的 UICollectionViewDataSources 方法中执行相同的操作也可以工作
对我有用的答案基于orxelm关于iOS 10 中使用自动调整大小的单元格中的 collectionViewContentSize 的答案
使布局无效似乎会阻止我的 collectionView 使用我的流布局,而是使用默认布局。这迫使我所有的细胞都具有相同的大小,这不是期望的结果(无论如何对我来说)。
| 归档时间: |
|
| 查看次数: |
3200 次 |
| 最近记录: |