Оценка 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

  • iOS: Как изменить ориентацию UICollectionViewCell?
  • Подклассирование ячейки представления пользовательской коллекции, созданной из наконечника
  • Странные исчезающие предметы при свитках
  • Повторное использование UICollectionViewCell внутри UITableView
  • UIScrollView в качестве подзадачи UICollectionViewCell - переход к контролю
  • UICollectionView пользовательский горизонтальный макет страницы
  • Невозможно заставить UICollectionView отображать ячейки
  • Отсутствие свойства редактирования и setEditing: анимированный: в UICollectionViewCell
  • Вложение UICollectionViews против UIPageViewController
  • Проблемы с компоновкой UICollectionViewCell iOS9
  • Прокрутка ячейки UICollectionView до центра
  • PhoneC: Разработка iOS проста с помощью XCode, Swift3, UITableView, cocatouch, давайте создадим приложения для iPhone, iPad и Macbook.