CollectionView sizeForItemAtIndexPath never called

前端 未结 15 1284
一整个雨季
一整个雨季 2020-12-24 11:17

This is driving me crazy! I have a UICollectionViewController as shown below:

class PhrasesCompactCollectionViewController: UICollectionViewController
         


        
15条回答
  •  有刺的猬
    2020-12-24 11:52

    Swift 3

    To set Cell Size of UICollectionView, you need to create and customise object of UICollectionViewFlowLayout. Customise the properties and set that layout object to the UICollectionView object.

    Change cellheight and cell cellWidth objects according to your requirement (the cell hight and width you want).

    override func viewDidLoad() {
        super.viewDidLoad()
    
        let cellWidth : CGFloat = myCollectionView.frame.size.width / 4.0
        let cellheight : CGFloat = myCollectionView.frame.size.height - 2.0
        let cellSize = CGSize(width: cellWidth , height:cellheight)
    
        let layout = UICollectionViewFlowLayout()
        layout.scrollDirection = .vertical //.horizontal
        layout.itemSize = cellSize
        layout.sectionInset = UIEdgeInsets(top: 1, left: 1, bottom: 1, right: 1)
        layout.minimumLineSpacing = 1.0
        layout.minimumInteritemSpacing = 1.0
        myCollectionView.setCollectionViewLayout(layout, animated: true)
    
        myCollectionView.reloadData()
    }
    

    Make Sure: if you added sizeForItemAt indexPath method then must REMOVE the method...

    Remove Below Method

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

提交回复
热议问题