Работая в iOS 7
, как указать, куда помещаются поля верхнего и нижнего колонтитула в UICollectionView
?
У меня есть пользовательский UICollectionViewFlowLayout
. я перезаписал
-(void)prepareLayout
-(NSArray*) layoutAttributesForElementsInRect:(CGRect)rect
-(UICollectionViewLayoutAttributes*) layoutAttributesForSupplementaryViewOfKind: (NSString*)kind atIndexPath:(NSIndexPath*)indexPath
Моя проблема в том, что я не уверен, как указать местоположение заголовка. Я уже указал, что заголовок существует в prepareLayout
:
-(void)prepareLayout
{
[super prepareLayout];
boundsSize = self.collectionView.bounds.size;
midX = boundsSize.width / 2.0f;
curIndex = 0;
self.headerReferenceSize = CGSizeMake(CELL_SIZE, TITLE_HEIGHT);
self.footerReferenceSize = CGSizeMake(0, 0);
self.scrollDirection = UICollectionViewScrollDirectionHorizontal;
self.sectionInset = UIEdgeInsetsMake(TOP_INSET, LEFT_INSET, BOTTOM_INSET, RIGHT_INSET);
self.minimumLineSpacing = LINE_SPACING;
self.minimumInteritemSpacing = INTERIM_SPACING;
self.itemSize = CGSizeMake(CELL_SIZE, CELL_SIZE);
}
Я просто не знаю, какое свойство моего пользовательского FlowLayout
нужно установить, поскольку, похоже, не существует чего-то вроде «HeaderLocation» для установки ни в качестве LayoutAttributes, ни в самом объекте макета. Прямо сейчас он появляется сбоку/между моими изображениями, когда я хочу, чтобы они появлялись над каждым изображением (горизонтальная прокрутка).
Я пробовал следующее:
-(UICollectionReusableView*) collectionView: (UICollectionView*)collectionView viewForSupplementaryElementOfKind:(NSString*)kind atIndexPath:(NSIndexPath*)indexPath
{
NSLog(@"**ViewForSupplementaryElementOfKind called***");
CGFloat centerX = collectionView.center.x;
CGFloat centerY = collectionView.center.y;
CGFloat titleWidth = [MyLayout titleWidth];
CGFloat titleHeight = [MyLayout titleHeight];
MyTitleView* titleView = [collectionView dequeueReusableSupplementaryViewOfKind:kind withReuseIdentifier:ImageTitleIdentifier forIndexPath:indexPath];
titleView.frame = CGRectMake(centerX - titleWidth/2.0,
0.0,
titleWidth,
titleHeight);
return titleView;
}
Это не работает. Заголовок появляется сверху, перекрываясь кучей других заголовков, а затем, когда я начинаю прокручивать (по горизонтали), они возвращаются в неправильное место, горизонтально между изображениями, а не сверху.
PS> Пожалуйста, не предлагайте ничего, что связано с размещением NIB или XIB. Я использую UICollectionView, а НЕ UICollectionViewController, поэтому на самом деле у меня нет прототипа ячейки для работы. Макет создается полностью программно — только из кода — поэтому я не могу просто открыть файл XIB и настроить расположение текстового поля.