You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

自定义包含UICollectionView的UIView子类后CollectionViewCell不显示怎么办

可能的遗漏配置如下
  • 未给自定义类内部的myCollectionView添加视图约束:你贴出的MyCollectionView代码中只完成了myCollectionView的初始化,没有执行addSubview(myCollectionView)操作,也没有给它添加铺满父视图的约束,你看到的黑色只是MyCollectionView本身的背景,内部的UICollectionView根本没有加入视图层级。
  • 错误使用UICollectionViewLayout抽象基类:初始化UICollectionView时不能直接传入UICollectionViewLayout()实例,这是布局的抽象基类,必须使用它的子类(比如常用的UICollectionViewFlowLayout),否则系统无法计算cell的布局位置,自然不会渲染cell。
  • 数据源方法返回值异常:UICollectionViewDataSource的两个必选方法collectionView(_:numberOfItemsInSection:)、collectionView(_:cellForItemAt:)你虽然声明了默认实现,但是如果前者返回值为0,或者后者没有正确返回复用的cell实例,都会导致cell不显示。
  • 未设置cell尺寸:如果使用UICollectionViewFlowLayout,要么直接设置itemSize属性给所有cell统一尺寸,要么实现UICollectionViewDelegateFlowLayout的collectionView(_:sizeForItemAt:)方法返回每个cell的尺寸,如果cell尺寸为0也不会被渲染。
  • 复用标识不匹配:你后续新注册自定义cell时用的标识,和cellForItemAt方法中复用cell的标识不一致的话,会无法正确创建cell实例。
  • 自定义MyCollectionView本身约束异常:你在MainViewController中调用的setUpConstraintsAndViews()方法如果没有给collectionView设置正确的宽高约束,MyCollectionView本身尺寸为0的话,内部内容自然不可见。
  • 数据源为空:如果你的cell数量是根据数据源数组的count返回的,数组没有赋值、为空的话也不会显示cell。
  • cell视觉效果和背景重合:如果cell的背景色和MyCollectionView的黑色背景完全一致,就算cell正常渲染你也无法肉眼识别。

内容的提问来源于stack exchange,提问作者Artun

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.10.01 00:48:00