I've created an UICollectionView that works fine on small devices like iPhone 5s/SE/6/6s/7 on both simulator and real device, but I have a strange situation when it comes about iPhone 6Plus, iPhone 7Plus and any iPad version. It works fine on real device, but it crashes in simulator with the following error:
Assertion failure in -[_UIFlowLayoutSection computeLayoutInRect:forSection:invalidating:invalidationContext:], /BuildRoot/Library/Caches/com.apple.xbs/Sources/UIKit_Sim/UIKit-3600.5.2/UIFlowLayoutSupport.m:823
Terminating app due to uncaught exception 'NSInternalInconsistencyException', reason: 'UICollectionViewFlowLayout internal error'
What I found out so far is that if I remove the estimatedItemSize it works fine but the auto-layout doesn't anymore, but if I have that enabled it crashes in simulator.
I am using the latest Xcode version and iOS 10.
Any ideas why it's crashing?
Answer that worked for me based on orxelm's answer on collectionViewContentSize in iOS 10 using self-sizing cells
Invalidating the layout seemed to prevent my collectionView from using my flow layout, and instead used the default layout. This forced all my cells to be the same size which was not the desired outcome (for me anyway).
Calling
invalidateLayout
before layout is a workaround for this issue.In a
UIViewController
subclass:or in a
UIView
subclass: