2014-10-01 2 views
0

Может ли кто-нибудь объяснить, почему UICollectionViewFlowLayout добавляет дополнительное пространство перед заголовком первого раздела в следующем? Желтая рамка - UICollectionView. Синие границы заголовка кадра в UICollectionReusableView раздел:UICollectionViewFlowLayout добавляет дополнительное пространство перед заголовком первого раздела

enter image description here

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

Насколько я могу судить, я обнуляю все. Это, как я экземпляр макета потока и коллекции вид:

UICollectionViewFlowLayout *flowLayout = [[UICollectionViewFlowLayout alloc] init]; 
flowLayout.itemSize = [BCFriendCell defaultSize]; 
flowLayout.minimumInteritemSpacing = 0.0f; 
flowLayout.minimumLineSpacing = 0.0f; 
flowLayout.headerReferenceSize = CGSizeMake(kScreenWidth, 63.0f); 
flowLayout.footerReferenceSize = CGSizeZero; 
flowLayout.sectionInset = UIEdgeInsetsZero; 

CGRect collectionViewFrame = ... 
collectionView = [[UICollectionView alloc] initWithFrame:collectionViewFrame collectionViewLayout:flowLayout]; 

collectionView.contentInset = UIEdgeInsetsZero; 
[self.view addSubview:collectionView]; 

NSLog(@"contentOffset: %@", NSStringFromCGPoint(collectionView.contentOffset)); 

Это последняя каротаж линия печатает ожидаемый

2014-09-30 19:23:28.974 MyApp[4468:60b] contentOffset: {0, 0} 

Спасибо за помощь.

+1

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

+0

Я создал «UICollectionView» программно, есть ли ограничения по умолчанию, которые применяются? Где они? – bcattle

+0

Нет, ограничения не создаются автоматически. Вот ссылка на документацию Apple о том, как их программно создавать ... https://developer.apple.com/library/ios/documentation/UserExperience/Conceptual/AutolayoutPG/AutoLayoutinCode/AutoLayoutinCode.html –

ответ

0

Оказывается, установка

myViewController.automaticallyAdjustsScrollViewInsets = NO;

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

Что странного в том, что мой вид контроллера является регулярным UIViewControllerнеUIScrollViewController. Так почему-то контроллер вида обнаруживает, что он содержит UIScrollView и серьезно меняет вложения содержимого. И это поведение по умолчанию.

Для получения дополнительной информации см. docs и this SO answer также дает много деталей. Об этом также говорят в iOS7 UI transition guide.

Смежные вопросы