Положение заголовка UICollectionView в режиме горизонтального направления прокрутки с компоновкой потока


У меня есть ios UICollectionView с компоновкой потока с горизонтальным направлением прокрутки. В этом случае типичная позиция заголовка находится на левой стороне ячеек.

Я хочу сделать заголовок в верхней части ячеек секции

У вас есть какие-нибудь идеи, как я могу это сделать?

2 18

2 ответа:

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

Установите его (вероятно, в viewDidLoad):

UICollectionViewFlowLayout *flowLayout = [[UICollectionViewFlowLayout alloc] init];
flowLayout.headerReferenceSize = CGSizeMake(self.collectionView.bounds.size.width, 30);
// other setup
[self.collectionView setCollectionViewLayout:flowLayout];

Затем ответьте на вид заголовка:

#define MY_HEADER_LABEL_TAG 128

- (UICollectionReusableView *)collectionView:(UICollectionView *)collectionView viewForSupplementaryElementOfKind:(NSString *)kind atIndexPath:(NSIndexPath *)indexPath {

    UICollectionReusableView *headerView = [collectionView dequeueReusableSupplementaryViewOfKind:
                                            UICollectionElementKindSectionHeader withReuseIdentifier:@"SectionHeader" forIndexPath:indexPath];
    UILabel *label = (UILabel *)[headerView viewWithTag:MY_HEADER_LABEL_TAG];
    if (!label) {
        label = [[UILabel alloc] initWithFrame:CGRectInset(headerView.bounds, 5, 5)];
        label.tag = MY_HEADER_LABEL_TAG;
        label.font = [UIFont boldSystemFontOfSize:12];
        label.textColor = [UIColor darkGrayColor];
        [headerView addSubview:label];
    }

    label.text = [NSString stringWithFormat:@"Section %d", indexPath.section];
    return headerView;
}

Я решил задачу, используя DateFlowLayout .

Смотрите, как я настроил его в этот другой ответ.