1

Xのセルを返す単純なUICollectionViewControllerがあります。セルが選択されたときにその特定の選択されたセルがサイズを変更し、他のセルのすべてが同じであるので高さが大きくなるようにしたいと思います。これをどのように達成するのですか?あなたはsizeForItemAtからindexPathが選択されているかどうかを確認することができ選択したUICollectionViewセルのサイズを変更する

class HomeController: UICollectionViewController, UICollectionViewDelegateFlowLayout { 

    let cellId = "cellId" 

    override func viewDidLoad() { 
     super.viewDidLoad() 
     collectionView?.backgroundColor = UIColor(white: 0.90, alpha: 1.0) 

     collectionView?.register(PostCell.self, forCellWithReuseIdentifier: cellId) 
     collectionView?.showsVerticalScrollIndicator = false 
     collectionView?.alwaysBounceVertical = true 
    } 

    override func collectionView(_ collectionView: UICollectionView, numberOfItemsInSection section: Int) -> Int { 
     return 4 
    } 

    override func collectionView(_ collectionView: UICollectionView, cellForItemAt indexPath: IndexPath) -> UICollectionViewCell { 
     let cell = collectionView.dequeueReusableCell(withReuseIdentifier: cellId, for: indexPath) as! PostCell 
     return cell 
    } 

    func collectionView(_ collectionView: UICollectionView, layout collectionViewLayout: UICollectionViewLayout, sizeForItemAt indexPath: IndexPath) -> CGSize { 
     let height = (view.frame.width) * 9/16 
     return CGSize(width: view.frame.width, height: height + 50 + 50) 
    } 
} 

答えて

8

:ここに私のコードです。そうである場合は、別の高さを返し、それ以外の場合は標準高さを返します。

override func collectionView(_ collectionView: UICollectionView, didSelectItemAt indexPath: IndexPath) { 

    collectionView.performBatchUpdates(nil, completion: nil) 
} 

func collectionView(_ collectionView: UICollectionView, layout collectionViewLayout: UICollectionViewLayout, sizeForItemAt indexPath: IndexPath) -> CGSize { 

    switch collectionView.indexPathsForSelectedItems?.first { 
    case .some(indexPath): 
     return CGSize() // your selected height 
    default: 
     let height = (view.frame.width) * 9/16 
     return CGSize(width: view.frame.width, height: height + 50 + 50) 
    } 
} 
+0

例を教えてください。ありがとうございました。 –

+0

今すぐに作業してください – Callam

+0

ありがとう、あなた。心から感謝する。 –