Как настроить UICollectionViewCell Width и Height программно

Я пытаюсь реализовать CollectionView . Когда я использую Autolayout, мои ячейки не изменят размер, а выравнивают.

Теперь я бы предпочел изменить их размеры, например

 //var size = CGSize(width: self.view.frame.width/10, height: self.view.frame.width/10) 

Я попытался установить в моем CellForItemAtIndexPath

 collectionCell.size = size 

это не сработало.

Есть ли способ достичь этого?

Редактировать :

Кажется, что ответы только изменят мою ширину и высоту CollectionView. Возможны ли конфликты в ограничениях? Есть идеи по этому поводу?

8 Solutions collect form web for “Как настроить UICollectionViewCell Width и Height программно”

используйте этот метод для установки ширины ширины пользовательской ячейки

Objective-C

 - (CGSize)collectionView:(UICollectionView *)collectionView layout:(UICollectionViewLayout *)collectionViewLayout sizeForItemAtIndexPath:(NSIndexPath *)indexPath { return CGSizeMake(CGRectGetWidth(collectionView.frame), (CGRectGetHeight(collectionView.frame))); } 

стриж

 func collectionView(collectionView: UICollectionView, layout collectionViewLayout: UICollectionViewLayout, sizeForItemAtIndexPath indexPath: NSIndexPath) -> CGSize { return CGSize(width: screenWidth, height: screenWidth); } 

Не забудьте добавить протокол «UICollectionViewDelegateFlowLayout» в объявление класса

 Class MyCollectionViewController: UICollectionViewController, UICollectionViewDelegateFlowLayout { //MARK: - UICollectionViewDelegateFlowLayout func collectionView(_ collectionView: UICollectionView, layout collectionViewLayout: UICollectionViewLayout, sizeForItemAt indexPath: IndexPath) -> CGSize { return CGSize(width: 100.0, height: 100.0) } } 

Наконец получил ответ. Вы должны расширить UICollectionViewDelegateFlowLayout
Это должно быть работа с ответами выше.

Вот что вы можете сделать, чтобы иметь разную ширину и высоту для ячеек относительно размера iPhone:

 func collectionView(collectionView: UICollectionView, layout collectionViewLayout: UICollectionViewLayout, sizeForItemAtIndexPath indexPath: NSIndexPath) -> CGSize { var width = (self.view.frame.size.width - 12 * 3) / 3 //some width var height = width * 1.5 //ratio return CGSize(width: width, height: height); } 

И, возможно, вам также следует отключить ограничения AutoLayout на ячейке, чтобы этот ответ работал.

Вид коллекции имеет объект макета . В вашем случае это, вероятно, макет потока ( UICollectionViewFlowLayout ). Задайте свойство itemSize макета itemSize .

Попробуйте ниже метод

 func collectionView(collectionView: UICollectionView, layout collectionViewLayout: UICollectionViewLayout, sizeForItemAtIndexPath indexPath: NSIndexPath) -> CGSize { return CGSize(width: 100.0, height: 100.0) } 

Попробуйте ниже метод

 func collectionView(collectionView: UICollectionView, layout collectionViewLayout: UICollectionViewLayout, sizeForItemAtIndexPath indexPath: NSIndexPath) -> CGSize { return CGSize(width: 100.0, height: 100.0) } 

Это моя версия, найдите подходящее соотношение, чтобы получить размер ячейки в соответствии с вашим требованием.

 - (CGSize)collectionView:(UICollectionView *)collectionView layout:(UICollectionViewLayout *)collectionViewLayout sizeForItemAtIndexPath:(NSIndexPath *)indexPath { return CGSizeMake(CGRectGetWidth(collectionView.frame)/4, CGRectGetHeight(collectionView.frame)/4); } 
  • Проблема с прокруткой UICollectionView
  • Ошибка перезагрузки UICollectionView
  • UICollectionView с самонастраивающимися ячейками не вычисляет contentSize правильно
  • UICollectionViewController Программно сбой с ошибкой параметра non-nil
  • UICollectionView Несколько разделов и заголовков
  • UICollectionView не отображает изображения ячеек
  • Как обновить размер ячеек в UICollectionView после установки данных ячейки?
  • UICollectionView - упорядочить ячейки по горизонтали
  • UICollectionView: должен быть инициализирован параметром макета не-nil
  • увеличить весь UICollectionView
  • Добавление subview в UICollectionViewCell, который обрабатывает весь кадр ячейки
  • PhoneC: Разработка iOS проста с помощью XCode, Swift3, UITableView, cocatouch, давайте создадим приложения для iPhone, iPad и Macbook.