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 новую информацию, которая, в свою очередь, спросит вашего делегата. Я верю, что это также оживит изменения.