Оценка UICollectionViewItemSize – последняя ячейка не выровнена

Я хочу сделать обычный горизонтальныйScrolling flowLayout UICollectionView с оценкойItemSize и preferredLayoutAttributesFittingAttributes в ячейке. Но с последней ячейкой что-то не так. Любая идея, где проблема? Сам проект

введите описание изображения здесь

@implementation RowCollectionView - (instancetype) initWithFrame:(CGRect)frame collectionViewLayout:(UICollectionViewLayout *)layout { if (self = [super initWithFrame:frame collectionViewLayout:layout]) { [self configureRowCollectionView]; } return self; } - (void) awakeFromNib { [super awakeFromNib]; [self configureRowCollectionView]; } - (void) configureRowCollectionView { self.backgroundColor = [UIColor lightGrayColor]; self.dataSource = self; self.delegate = self; // Horizontal Direction UICollectionViewFlowLayout *flowLayout = (UICollectionViewFlowLayout *) self.collectionViewLayout; flowLayout.scrollDirection = UICollectionViewScrollDirectionHorizontal; // Estimated Item Size flowLayout.estimatedItemSize = CGSizeMake(self.bounds.size.height, self.bounds.size.height); [self registerClass:[RowCollectionViewCell class] forCellWithReuseIdentifier:NSStringFromClass([RowCollectionViewCell class])]; } - (NSInteger) collectionView:(UICollectionView *)collectionView numberOfItemsInSection:(NSInteger)section { return 10; } - (UICollectionViewCell *) collectionView:(UICollectionView *)collectionView cellForItemAtIndexPath:(NSIndexPath *)indexPath { UICollectionViewCell *cell = [collectionView dequeueReusableCellWithReuseIdentifier:NSStringFromClass([RowCollectionViewCell class]) forIndexPath:indexPath]; cell.contentView.backgroundColor = [UIColor redColor]; return cell; } @end @implementation RowCollectionViewCell - (UICollectionViewLayoutAttributes *) preferredLayoutAttributesFittingAttributes:(UICollectionViewLayoutAttributes *)layoutAttributes { [super preferredLayoutAttributesFittingAttributes:layoutAttributes]; UICollectionViewLayoutAttributes *attributes = [layoutAttributes copy]; attributes.size = CGSizeMake(80, 80); return attributes; } @end 

6 Solutions collect form web for “Оценка UICollectionViewItemSize – последняя ячейка не выровнена”

Вы устанавливаете параметр valuItemSize в самом начале представления.

Вам нужно установить его на каком-то контроллере.

Также,

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

Документация: оцененныйItemSize

есть простой способ решить эту проблему. Вы можете добавить количество прототипов для проверки ячейки в нужном месте. Как только вы обнаружите проблему в последней ячейке. Проверьте ячейки в окне Inspector.

Вы вызываете метод super, но вы не использовали супер возвращаемые layoutAttributes.

  [super preferredLayoutAttributesFittingAttributes:layoutAttributes]; 

Вы можете попробовать распечатать оригинал layoutAttributes vs super's layoutAttributes. Иногда вам не нужно называть суперфункцию.

Во-вторых, вы можете создать пользовательский flowlayout или установить вставку, чтобы ваша ячейка совпадала с вершиной. Я сделал это в своем проекте.

Вы можете рассматривать это предложение. По моему мнению, высота UICollectionView больше, чем UICollectionViewCell Height, вот почему это происходит. пожалуйста, сравните их

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

Я сделал аналогичный небольшой проект (один просмотр с горизонтальным сбором (1 * N)), вот github. Надеюсь, это будет полезно для вашего требования.

https://github.com/texas16/HorizontalCollectionView

  • Как обернуть собственный размер UICollectionViewCell
  • UICollectionView таинственный сбой
  • Анимация UICollectionView sizeForItemAtIndexPath (Swift)
  • Доступ к родительскому UIViewController UICollectionView
  • Как программно изменить размер UICollectionViewCell в Swift?
  • Загрузка изображений из фотографий в коллекцию приводит к появлению сообщения об ошибке «Соединение с активами было прервано или активы умерли»
  • Невозможно установить тень на UICollectionViewCell и иметь закругленные углы. Могут делать только одну работу за раз
  • UICollectionView Отклонения и интервалы пейджинга
  • Как повысить производительность UICollectionView с пользовательскими размерами ячеек?
  • Прокрутка ячейки UICollectionView до центра
  • Изменение размера / масштабирования содержимого ячейки UICollectionView при переходе на макет
  • PhoneC: Разработка iOS проста с помощью XCode, Swift3, UITableView, cocatouch, давайте создадим приложения для iPhone, iPad и Macbook.