如何将 UICollectionViewCell 放在前面?

Posted

技术标签:

【中文标题】如何将 UICollectionViewCell 放在前面?【英文标题】:How to bring a UICollectionViewCell to front? 【发布时间】:2014-02-15 18:29:09 【问题描述】:

我最近发现了集合视图,现在我的生活变得简单多了,但我遇到了一个问题。我(显然)在视图中有一些单元格,但里面的内容可以被捏住。我使用了一个在单元格框架外展开的动画,正如您可以想象的那样,当单元格内的圆圈变大时,附近的其他单元格会覆盖它。在我简单地使用bringSubviewToFront 之前,一切正常。但现在我很困惑,不知道如何“bringCellToFront”。那么我该怎么做呢? 谢谢你的建议!

【问题讨论】:

【参考方案1】:

标准的UICollectionViewLayoutAttributes 对象有一个zIndex 属性(documentation)。这决定了单元格的从前到后的顺序。

您的布局类应该使用它来确定最前面的单元格。您需要对单元格的索引路径有一些引用,然后您可以将其传递给布局对象,以便它知道要应用哪个 z 索引。您可能必须在触发动画时使布局无效,因此单元格位于最前面。

【讨论】:

【参考方案2】:

除了jrturton的回答,我会贴一个代码sn-p来实现你要的。在您的UIViewCollectionCell 中,只需覆盖以下方法:

override func apply(_ layoutAttributes: UICollectionViewLayoutAttributes) 
    layoutAttributes.zIndex = 1 // Or any other number you want. The higher, the front-errr (?) Default is 0
    super.apply(layoutAttributes)

您可以使用负值将视图发送到后面。

【讨论】:

以上是关于如何将 UICollectionViewCell 放在前面?的主要内容,如果未能解决你的问题,请参考以下文章

如何将 UICollectionViewCell 高度设置为视图(屏幕)高度的 90%?

如何将导航栏移到 UICollectionViewCell 之外?

如何将 UIView 约束为 UICollectionViewCell

如何将 UICollectionViewCell 放在前面?

如何将 UICollectionViewCell 嵌套在另一个中?

如何将 UITapGestureRecognizer 添加到 UICollectionViewCell 中的图像