UICollectionView не может свернуть или удалить дополнительный вид

У меня есть uicollectionview, использующий макет потока, который имеет дополнительный вид заголовка, который я иногда хочу отображать. Поэтому в основном я хочу иметь кнопку, которая, при нажатии, удалит дополнительное представление из представления коллекции, а также переместит все элементы в представлении коллекции с учетом того, что заголовок пропал. Это возможно? Я пробовал это неоднократно во многих отношениях. Изменение ссылочного размера заголовка, изменение моего ответа на метод делегата для размера заголовка, аннулирование макета, перезагрузка данных и т. Д. И т. Д. И т. Д. Что мне не хватает?

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

1 ответ

В методах компоновки вашего делегата верните соответствующий размер для любого интересующего вас состояния:

- (CGSize)collectionView:(UICollectionView *)collectionView layout:(UICollectionViewLayout *)collectionViewLayout referenceSizeForHeaderInSection:(NSInteger)section {
    if (self.headerVisble) {
        return CGSizeMake(collectionView.bounds.size.width, 30.0f);
    }
    else {
        return CGSizeZero;
    }
}

Затем, когда вам нужно обновить макет вызова:

[collectionView.collectionViewLayout invalidateLayout];

Представление коллекции запросит у объекта Layout новую информацию, которая, в свою очередь, спросит вашего делегата. Я верю, что это также оживит изменения.

Другие вопросы по тегам