Вы установили приблизительный размер в макете. Согласно документу:
open var estimatedItemSize: CGSize // defaults to CGSizeZero - setting a non-zero size enables cells that self-size via -preferredLayoutAttributesFittingAttributes:
Так что я предполагаю, что у вас есть изображение большего размера, чем у вашего UICollectionViewCell, и при прокрутке вы можете увидеть странное поведение. Чтобы избежать этого, просто удалите приблизительный размер параметра. Вам не нужно реализовывать sizeForItemAt
ни того, ни другого. Таким образом, ваш код будет выглядеть как
let layout: UICollectionViewFlowLayout = UICollectionViewFlowLayout()
layout.sectionInset = UIEdgeInsets(top: 0, left: 0, bottom: 0, right: 0)
layout.itemSize = CGSize(width: 60, height: 60)
collectionView = UICollectionView(frame: self.view.frame, collectionViewLayout: layout)
let nib = UINib(nibName: "SimpleStackCollectionViewCell", bundle: nil);
collectionView.register(nib, forCellWithReuseIdentifier: "MyCell")
collectionView?.dataSource = self
collectionView?.delegate = self
И, наконец, я не уверен, что вам нужно установить ограничения для вашего заполнителя UIImageView
, если ваше представление стека уже установлено на alignment = .fill
Кроме того, вы можете заменить ограничение ширины на UIStackView
на конечное ограничение.
И, возможно, вам нужно установить приоритет сопротивления вертикальному сжатию на UILabel
, отличный от значения UIImageView
.