collectionview因UIDeviceOrientation变化引起的warning

警告描述如下:

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)

在collection view重排之前invalidatelayout

注: invalidatelayout的逻辑在 sizeWillChange方法中

可以参考invalidate layout上的讨论 

最后编辑于
©著作权归作者所有,转载或内容合作请联系作者
平台声明:文章内容(如有图片或视频亦包括在内)由作者上传并发布,文章内容仅代表作者本人观点,简书系信息发布平台,仅提供信息存储服务。

推荐阅读更多精彩内容

  • Correctness AdapterViewChildren Summary: AdapterViews can...
    MarcusMa阅读 8,925评论 0 6
  • 感恩妈妈!生我养我教育我。 感恩爸爸!每天辛苦地工作赚钱,给我们安定的生活。 ...
    靓景阅读 274评论 0 1
  • 你可曾对生活迷茫过 你可曾对工作有过规划 浑浑噩噩 一直迷茫中 为了生计 不敢规划 忘了追求 没了爱好 迷失自我
    丁晓點阅读 230评论 3 5
  • 一直以来,中国移动的高速发展现象被业界戏称为“大象快跑”。当这头大象迈入移动互联网时代后,不少人开始质疑甚至指责它...
    顾嘉阅读 319评论 0 1