CollectionView Cell Auto调整大小

时间:2016-02-21 08:21:55

标签: swift2 xcode7 uicollectionviewcell uicollectionviewlayout

我创建了一个UICollectionView,其中有一个原型单元格。我想要每行2个单元格并在较小的屏幕上运行它,每行一个单元格。 在更大的屏幕上,细胞之间的距离增加。我只是谈论iPhone。

我认为我必须以编程方式设置约束,取屏幕宽度并除以2.我知道如何获取屏幕宽度并将其除以2但我不知道如何以编程方式为单元格提供宽度和高度。

1 个答案:

答案 0 :(得分:1)

UICollectionViewDelegateFlowLayout为此目的定义了一种方法。

func collectionView(collectionView: UICollectionView, layout collectionViewLayout: UICollectionViewLayout, sizeForItemAtIndexPath indexPath: NSIndexPath) -> CGSize {
     // return a CGSize 
 }

示例:

class MyViewController : UIViewController, UICollectionViewDelegateFlowLayout {

    override func viewDidLoad() {
        super.viewDidLoad()

        self.collectionView.delegate = self
        self.collectionView.dataSource = self
    }

  // ...

    func collectionView(collectionView: UICollectionView, layout collectionViewLayout: UICollectionViewLayout, sizeForItemAtIndexPath indexPath: NSIndexPath) -> CGSize {
        return CGSize(width: CGFloat(self.view.frame.size.width / 2), height: self.view.frame.size.height) 
    }

  // ...
}