iOS 15 Simulator滚动时collection view单元格渲染异常问题
问题根因
该问题是iOS 15系统UIKit框架处理嵌套滚动视图时的图层缓存合并异常导致,触控响应正常说明视图层级、事件链逻辑均无问题,仅系统渲染缓存失效导致视觉异常。
修复方案
- 方案1:关闭内嵌UICollectionView的图层光栅化配置
若你开启了collectionView的光栅化优化,关闭该属性即可修复,代码如下:// Swift版本 collectionView.layer.shouldRasterize = false// Objective-C版本 collectionView.layer.shouldRasterize = NO; - 方案2:滚动时强制图层重绘
在内嵌UICollectionView对应的scrollViewDidScroll代理方法中添加强制重绘逻辑:func scrollViewDidScroll(_ scrollView: UIScrollView) { scrollView.layer.setNeedsDisplay() } - 方案3:关闭cell布局的隐式动画
若你使用自动布局动态计算cell尺寸,在cellForItemAt代理中添加如下代码即可:func collectionView(_ collectionView: UICollectionView, cellForItemAt indexPath: IndexPath) -> UICollectionViewCell { let cell = collectionView.dequeueReusableCell(withReuseIdentifier: "CellID", for: indexPath) // 原有cell配置逻辑 cell.layer.removeAllAnimations() UIView.performWithoutAnimation { cell.layoutIfNeeded() } return cell } - 方案4:临时适配方案
给内嵌UICollectionView设置非透明的纯色背景,iOS 15渲染逻辑会自动跳过透明图层的缓存合并,也可解决该异常。
内容的提问来源于stack exchange,提问作者Jules Burt
相关产品推荐
相关产品推荐

