如何更改UICollectionView zIndex?

时间:2016-08-17 12:24:19

标签: ios objective-c swift uicollectionview tvos

检查下图。我需要突出显示关注的单元格,使其高于collectionView中的所有单元格。
我知道我必须改变焦点细胞的zIndex。怎么做?
我需要逻辑。我的代码在objective-c

这适用于tvOSiOS代码也可以在此处使用。

enter image description here

4 个答案:

答案 0 :(得分:11)

您是否尝试过为cell.layer.zPosition设置值?

答案 1 :(得分:8)

尝试手动将layer.zPosition应用为zIndex子类的applyLayoutAttributes:方法中的UICollectionViewCell

- (void)applyLayoutAttributes:(UICollectionViewLayoutAttributes *)layoutAttributes
{
    [super applyLayoutAttributes:layoutAttributes];
    self.layer.zPosition = layoutAttributes.zIndex;
}

答案 2 :(得分:3)

您需要创建自定义集合视图流布局。根据集合视图的滚动位置或可见的rect计算zIndex。样本类如下所示。

final class CustomCollectionViewLayout: UICollectionViewFlowLayout {

    override func layoutAttributesForElements(in rect: CGRect) -> [UICollectionViewLayoutAttributes]? {
        let attributes = super.layoutAttributesForElements(in: rect)
        attributes?.forEach {
            $0.zIndex = 0 //Compute and set
        }
        return attributes
    }

    override func layoutAttributesForItem(at indexPath: IndexPath) -> UICollectionViewLayoutAttributes? {
        let attribute = super.layoutAttributesForItem(at: indexPath)
        attribute?.zIndex = 0 //Compute and set
        return attribute
    }
}

答案 3 :(得分:-1)

也许将集合视图的z位置设置为-2,取消高亮显示为-1并突出显示为0