UICollectionView добавляет верхний предел


Я хочу поставить элемент управления UICollectionView, который показывает большие пальцы по горизонтали (только одна линия больших пальцев). По какой-то причине UICollectionView нажимает большие пальцы 44 пикселей вниз, поэтому высота "0" на самом деле "44". Я предполагаю, что это может быть добавление этого пространства для рассмотрения высоты панели навигации (я просто предполагаю). Поскольку мой UICollectionView находится только на части экрана, я не хочу этого поля. Есть ли способ удалить его?

6 74

6 ответов:

проблема может быть в вставках содержимого представления коллекции. Попробуйте добавить self.automaticallyAdjustsScrollViewInsets = NO; в поле зрения регулятора viewDidLoad метод.

вы можете установить это в раскадровке.

убедитесь, что вы выбрали ViewController, а затем снимите флажок "настроить вставки прокрутки".

enter image description here

Я не проверял, что этот метод IB/Storyboard делает на iOS6, хотя. С помощью метода кода вам нужно проверить, что VC отвечает на метод:

if ([self respondsToSelector:@selector(setAutomaticallyAdjustsScrollViewInsets:)]) {
self.automaticallyAdjustsScrollViewInsets = NO;
}

Я нашел, что добавление:

self.edgesForExtendedLayout = UIRectEdgeNone;

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

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

стоит прочитать

может быть, вы можете попробовать заставить это значение в 0, используя макет потока делегатов представления коллекции:

- (UIEdgeInsets)collectionView:(UICollectionView *)collectionView layout:(UICollectionViewLayout*)collectionViewLayout insetForSectionAtIndex:(NSInteger)section
{
    return UIEdgeInsetsMake(PADDING_TOP, PADDING_LEFT, PADDING_BOTTOM, PADDING_RIGHT);
}

измените значение вашего отступа.

Swift 3:

сначала вы хотите установить viewControllers automaticallyAdjustsScrollViewInsets в false:

self.automaticallyAdjustsScrollViewInsets = false

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

func collectionView(_ collectionView: UICollectionView, layout collectionViewLayout: UICollectionViewLayout, insetForSectionAt section: Int) -> UIEdgeInsets {
    //top, left, bottom, right
    return UIEdgeInsets(top: 10, left: 0, bottom: 0, right: 0)
}

подобно ответу @Sviatoslav, вы можете попробовать следующее:

- (void) viewDidLayoutSubviews {
    [super viewDidLayoutSubviews];

    yourCollectionView.contentOffset = CGPointMake(0, 0);
}