UICollectionView, просто установите ячейку в ширину?

Здесь простой UICollectionView в желтом

enter image description here

Красная стрелка устанавливает ширину ячейки. (TBC: нажатие на розовую ячейку: для "размера" выберите "По умолчанию", то, что вы установили в красной стрелке, станет размером ячейки.)

Пример: для вертикального iPhone установите ширину до 320.

Но это кажется сумасшедшим... конечно, я могу установить ширину ячейки на основе ширины UICollectionView?

Нет проблем с автоматизацией самого представления.

enter image description here

Это прекрасно работает.

Но кажется сумасшедшим, что я не могу установить ширину CELL как "то же, что и представление". Кажется, трудно поверить, что нужно установить его вручную, в коде?

TBC Другими словами, как указывает Никита,

-(CGSize) collectionView:(UICollectionView *)collectionView
     layout:(UICollectionViewLayout *)collectionViewLayout
     sizeForItemAtIndexPath:(NSIndexPath *)indexPath
    {
    return self.view.frame.size;
    }

(действительно, вам также это необходимо...)

-(UIEdgeInsets)collectionView:(UICollectionView *)collectionView
   layout:(UICollectionViewLayout*)collectionViewLayout
   insetForSectionAtIndex:(NSInteger)section
    {
    return UIEdgeInsetsMake(0,0,0,0);   //t,l,b,r
    }

На самом деле - вы должны сделать это в коде?! Нет способа сделать это в Раскадке, с автозапуском или чем-нибудь еще?!

Ответ 1

Я думаю, вам нужно взглянуть на

- (CGSize)collectionView:(UICollectionView *)collectionView layout:(UICollectionViewLayout*)collectionViewLayout sizeForItemAtIndexPath:(NSIndexPath *)indexPath

of UICollectionViewLayout, где вы можете установить размер на основе ориентации и текущего кадра.


Казалось бы, вам просто нужно сделать это в коде.

Ответ 2

Существует простой способ сделать это. Вот быстрый код. Предполагает, что вам нужен один элемент в целом, и в примере мои ячейки имеют 64 pts high, и я хочу 8 очков для боковых полей, и, наконец, collectionView - это имя вашего UICollectionView.

Вставьте это в viewDidLoad:

    let layout = collectionView?.collectionViewLayout as! UICollectionViewFlowLayout
    layout.itemSize = CGSize.init(width: (UIScreen.main.bounds.width - 16), height: 64.0)

Это приведет к тому, что все ячейки будут по умолчанию равны этому размеру. Вы все же можете переопределить отдельные ячейки, если вы подклассифицируете UICollectionViewLayout или UICollectionViewFlowLayout, как указано в других ответах. Но если вы просто хотите иметь больше табличного представления, как поведение, это должно сработать.

Ответ 3

I моя вставка ячейки для ввода лишних фигур введите описание изображения здесь