替换 UICollectionView 中的子视图,而不是更改子视图属性

Replace a subview in UICollectionView, instead of changing subview properties

我正在尝试实现 UICollectionViewCell 的子类。

我得到一组自定义视图,我们称它为 views 从一个对象传递到另一个对象,还有一个名为 views 的数组。它们的类型是 CustomView.

UICollectionViewCell 子类有一个 属性 类型 CustomViewview

CellForItemAt... 中,我试图从 CustomViews 的数组中设置单元格的 view 属性,如下所示:

let customView = array[indexPath.row]
cell.view = customView

但是,当我这样做时,单元格显示不正确;它们是空的,只是屏幕上的灰色形状。

但是,当我明确设置单元格 CustomView 子视图的属性时,它显示了我想要的方式。

有没有办法在单元格上进行布局传递?或者您是否必须在 UICollectionViewCells 中显式设置属性,而不是只传入预配置的视图?

代码是专有的,所以我不得不隐瞒,但如果我能澄清,请告诉我

编辑:请参阅已接受答案中的评论以获得进一步解释

您应该添加约束,否则您将获得默认的自动调整大小掩码约束。调用 cell.setNeedsLayout() 以强制自动布局在您分配 voew 后在下一次绘制之前重新计算。