UICollectionView – iOS 10 – iPhone 6 Plus模拟器崩溃,但适用于真实设备

我已经创build了一个UICollectionView,可以在模拟器和真实设备上的iPhone 5s / SE / 6 / 6s / 7等小设备上正常工作,但是对于iPhone 6Plus,iPhone 7Plus和任何iPad版本,我有一个奇怪的情况。 它在真实的设备上工作正常,但它在模拟器崩溃,出现以下错误:

在 – [_ UIFlowLayoutSection computeLayoutInRect:forSection:invalidating:invalidationContext:] /BuildRoot/Library/Caches/com.apple.xbs/Sources/UIKit_Sim/UIKit-3600.5.2/UlowLayoutSupport.m:823

终止应用程序,由于未捕获的exception'NSInternalInconsistencyException',原因:'UICollectionViewFlowLayout内部错误'

我到目前为止发现的是,如果我删除estimatedItemSize它工作正常,但自动布局不再,但如果我有启用它在模拟器崩溃。

我正在使用最新的Xcode版本和iOS 10。

任何想法,为什么它崩溃?

在布局之前调用invalidateLayout是解决此问题的一种解决方法。

UIViewController子类中:

 override func viewWillLayoutSubviews() { super.viewWillLayoutSubviews() collectionView.collectionViewLayout.invalidateLayout() } 

或者在UIView子类中:

 override func layoutSubviews() { super.layoutSubviews() collectionView.collectionViewLayout.invalidateLayout() }