Я использую CSStickyHeaderFlowLayout от https://github.com/jamztang/CSStickyHeaderFlowLayoutоживляющего UICollectionView дополнительного вид размера
и как часть моего приложения я имею в представлении заголовка/клеточная кнопку, которая посылает в целях сбора, что она должна расти. в свою очередь, представление коллекции изменяет предпочтительный размер заголовка в CSStickyHeaderFlowLayout и отправляет invalidateLayout в CSStickyHeaderFlowLayout. попытка анимации через блок аниме не работает хорошо, поскольку он перемещает заголовок с кнопки на верх. Это делает его действительно странным. есть ли способ, чтобы flowLayout правильно анимировал изменения в дополнительном представлении?
это мой код для изменения размера.
- (void)treckDetailMapCellSizeToggle:(BOOL)toggle {
//Modifier l'attribu de la map et invalider le layout pour le redessiner.
CSStickyHeaderFlowLayout *layout = (id)self.collectionViewLayout;
if ([layout isKindOfClass:[CSStickyHeaderFlowLayout class]]) {
[UIView animateWithDuration:0.5 animations: ^{
if (isMapCellExpended) {
isMapCellExpended = NO;
layout.parallaxHeaderReferenceSize = CGSizeMake(self.view.frame.size.width, HEADER_VIEW_PREFERED_SIZE);
}
else {
isMapCellExpended = YES;
layout.parallaxHeaderReferenceSize = CGSizeMake(self.view.frame.size.width, HEADER_VIEW_MAX_SIZE);
}
[layout invalidateLayout];
}];
}
}
Это видео о том, что происходит, когда я нажимаю на кнопку под названием «Ajouter а ля карт».
https://www.youtube.com/watch?v=aqm99HebvwE
Edit:
Thaks на чтение этой страницы (что я еще не видел). Я узнал, что это сделает его немного лучше, но не устранит проблему. :
- (void)collectionView:(UICollectionView *)collectionView didSelectItemAtIndexPath:(NSIndexPath *)indexPath {
CSStickyHeaderFlowLayout *layout = (id)self.collectionViewLayout;
if ([layout isKindOfClass:[CSStickyHeaderFlowLayout class]]) {
[self.collectionView performBatchUpdates: ^{
preferedSize = preferedSize == 200 ? 300 : 200;
layout.parallaxHeaderReferenceSize = CGSizeMake(self.view.frame.size.width, preferedSize);
} completion: ^(BOOL finished) {
}];
}
}
Да я попытался недействительности. :) но это не сработало. –
Это не работает. Как я узнал, только CollectionCells может иметь этот тип анимации. дополнительные представления нужно будет анимировать каким-либо другим способом (вручную) и синхронизировать некоторые с анимацией остальной части представления. Так что нет хорошего способа это сделать. это печально недостаток CollectionView. –