警告描述如下:
the item width must be less that the width of the UICollectionView minus the section insets left and right values.
Please check the values return by the delegate.
发生场景:
在portrait orientation下原本正常的collectionview由于UIDeviceOrientation切换为landscape而导致报以上的warning,原因是UIDeviceOrientation更新后collection重新排布各item时,由于collection view 的layout在获取sizeforcell的返回值时发现高度超过了屏幕高度所致。导致这个warning的原因是,由于sizeforcell 中 仍使用portrait orientation下计算出来的值而导致所计算出来的Cell height仍为portrait下的值所致(此时cell width是等于portrait下屏幕宽度的,在landscape下是满足要求即并未超过此时屏幕宽度的)
解决方案如下:(在uiviewcontroller中重载willrotate的方法以在rotate即将开始时invalidatelayout)
注: invalidatelayout的逻辑在 sizeWillChange方法中
可以参考invalidate layout上的讨论