Я хочу поместить элемент управления UICollectionView, который показывает большие пальцы горизонтально (только одна строка больших пальцев). По какой-то причине UICollectionView нажимает большие пальцы на 44 пиксела, поэтому высота "0" на самом деле равна "44". Я предполагаю, что это могло бы добавить это пространство, чтобы рассмотреть высоту навигационной панели (я просто предполагаю). Поскольку мой UICollectionView находится только на части экрана, я не хочу этого поля. Есть ли способ удалить его?
UICollectionView добавляет верхнюю границу
Ответ 1
Проблема может быть в наборах содержимого коллекции.
Попытайтесь добавить self.automaticallyAdjustsScrollViewInsets = NO;
в метод контроллера viewDidLoad
.
Ответ 2
Вы также можете установить это в раскадровке.
Убедитесь, что вы выбрали ViewController, а затем отключите "Настроить прокрутки".
Я не тестировал, что этот метод IB/Storyboard делает на iOS6. С помощью метода кода вам нужно проверить, отвечает ли VC методу:
if ([self respondsToSelector:@selector(setAutomaticallyAdjustsScrollViewInsets:)]) {
self.automaticallyAdjustsScrollViewInsets = NO;
}
Ответ 3
Я обнаружил, что добавление:
self.edgesForExtendedLayout = UIRectEdgeNone;
В контроллере представления я загрузил UICollectionView в решении проблемы, так как я не мог получить принятый ответ для работы.
Вопрос, на который я нашел этот ответ, можно найти здесь и дает чрезвычайно подробное и интересное объяснение разницы между автоматически настроенными прокручиваемыми вставками вида, расширенными макетами и край для расширенных макетов.
Хорошо стоит прочитать
Ответ 4
Возможно, вы можете попытаться заставить это значение равным 0, используя раскладку потока делегатов представления коллекции:
- (UIEdgeInsets)collectionView:(UICollectionView *)collectionView layout:(UICollectionViewLayout*)collectionViewLayout insetForSectionAtIndex:(NSInteger)section
{
return UIEdgeInsetsMake(PADDING_TOP, PADDING_LEFT, PADDING_BOTTOM, PADDING_RIGHT);
}
Измените значение вашего дополнения.
Ответ 5
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)
}
Ответ 6
Как упоминали некоторые другие, viewController.automaticallyAdjustsScrollViewInsets
устарела с iOS 11. Мое решение...
Swift 4.2, Xcode 10.1, iOS 12.1:
По какой-то причине collectionView.contentSize.height
выглядел меньше разрешенной высоты моего представления коллекции. Во-первых, я использовал ограничение авторазметки относительно 1/2 высоты суперпредставления. Чтобы исправить это, я изменил ограничение на "безопасную область" представления.
Это позволило мне установить высоту ячейки для вертикального заполнения представления моей коллекции, используя collectionView.contentSize.height
:
private func setCellSize() {
let height: CGFloat = (collectionView.contentSize.height) / CGFloat(numberOfRows)
let width: CGFloat = view.frame.width - CGFloat(horizontalCellMargin * 2)
let layout = collectionView.collectionViewLayout as! UICollectionViewFlowLayout
layout.itemSize = CGSize(width: width, height: height)
}
До
После
Ответ 7
Как и @Sviatoslav, вы можете попробовать следующее:
- (void) viewDidLayoutSubviews {
[super viewDidLayoutSubviews];
yourCollectionView.contentOffset = CGPointMake(0, 0);
}