如何更改 UICollectionView zIndex?
How to change UICollectionView zIndex?
检查下图。我需要 突出显示 焦点单元格,使其位于 collectionView
.
中的所有单元格之上
我知道我必须更改焦点单元格的 zIndex
。怎么做?
我需要逻辑。我的代码在 objective-c
.
这是针对 tvOS
但我想 iOS
代码也可以在这里工作。
您需要创建自定义集合视图流布局。根据集合视图的滚动位置或可见矩形计算 zIndex。示例 class 如下所示。
final class CustomCollectionViewLayout: UICollectionViewFlowLayout {
override func layoutAttributesForElements(in rect: CGRect) -> [UICollectionViewLayoutAttributes]? {
let attributes = super.layoutAttributesForElements(in: rect)
attributes?.forEach {
[=10=].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
}
}
您是否尝试过为 cell.layer.zPosition
设置值?
尝试手动应用 layer.zPosition
成为 UICollectionViewCell
子类的 applyLayoutAttributes:
方法中的 zIndex
:
- (void)applyLayoutAttributes:(UICollectionViewLayoutAttributes *)layoutAttributes
{
[super applyLayoutAttributes:layoutAttributes];
self.layer.zPosition = layoutAttributes.zIndex;
}
也许将集合视图的 z 位置设置为 -2,取消突出显示为 -1,突出显示为 0
检查下图。我需要 突出显示 焦点单元格,使其位于 collectionView
.
中的所有单元格之上
我知道我必须更改焦点单元格的 zIndex
。怎么做?
我需要逻辑。我的代码在 objective-c
.
这是针对 tvOS
但我想 iOS
代码也可以在这里工作。
您需要创建自定义集合视图流布局。根据集合视图的滚动位置或可见矩形计算 zIndex。示例 class 如下所示。
final class CustomCollectionViewLayout: UICollectionViewFlowLayout {
override func layoutAttributesForElements(in rect: CGRect) -> [UICollectionViewLayoutAttributes]? {
let attributes = super.layoutAttributesForElements(in: rect)
attributes?.forEach {
[=10=].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
}
}
您是否尝试过为 cell.layer.zPosition
设置值?
尝试手动应用 layer.zPosition
成为 UICollectionViewCell
子类的 applyLayoutAttributes:
方法中的 zIndex
:
- (void)applyLayoutAttributes:(UICollectionViewLayoutAttributes *)layoutAttributes
{
[super applyLayoutAttributes:layoutAttributes];
self.layer.zPosition = layoutAttributes.zIndex;
}
也许将集合视图的 z 位置设置为 -2,取消突出显示为 -1,突出显示为 0