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() }