2016-08-17 19 views
1

下記の画像をチェックしてください。私はを強調表示する必要がありますそれはすべての細胞の上にあるようにcollectionView
私は、フォーカスされたセルのzIndexを変更する必要があることを知っています。どうやってするか?
私はロジックが必要です。私のコードはobjective-cです。UICollectionView zIndexを変更するには?

これはtvOSですが、iOSのコードもここで動作します。

enter image description here

+0

に強調これのサンプルコードはありますか? –

+0

私は持っていません。私が正しく覚えていれば、 'didUpdateFocusInContext:'メソッドの中で次のフォーカスされたセルのレイヤーの 'zPosition'を一つに変更するだけです。また、以前のフォーカスされたセルのzPositionをゼロに設定します。それは動作するはずです。 – abhi1992

+0

これはUICollectionViewCellのメソッドですか?もしそうなら、私はそれを追加しましたが、呼び出されません。それ以上の設定は必要ですか? –

答えて

7

cell.layer.zPositionの設定値を試しましたか?

+0

これは動作しますが、手動で前のセルのレイヤーのzPositionを0に、現在のアクティブなセルレイヤーのzPositionを1に設定する必要があります。 – abhi1992

2

は、カスタムコレクションビューのFlowLayoutのを作成する必要があります。コレクションビューのスクロール位置または表示可能な矩形に基づいてzIndexを計算します。サンプルクラスを以下に示します。

class CustomCollectionViewLayout : UICollectionViewFlowLayout { 

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

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

UICollectionViewCellサブクラスのzIndexapplyLayoutAttributes:における方法であることがlayer.zPositionを適用手動で試し:

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

このメソッドで現在選択されているインデックスを取得する方法 –

-1

多分にハイライトを消し、-2コレクションビューのz位置を設定-1と0

関連する問題