CollectionView Cell Автоматическое изменение размера

Я создал UICollectionView, в котором у меня есть одна ячейка прототипа. Я хочу, чтобы по 2 ячейки на строку, и запуск его на меньшем экране дает мне по одной ячейке на строку. Расстояние между ячейками увеличивается на большом экране. Я говорю только в отношении iPhone.

Я думаю, что я должен установить ограничения программно, взяв ширину экрана и разделив ее на 2. Я знаю, как взять ширину экрана и разделить ее на 2, но я не знаю, как программно задать ширину и высоту для ячейки.

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) 
    }

  // ...
}
Другие вопросы по тегам