2015-04-10 3 views
1

Я использую 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) { 
     }]; 

    } 
} 

ответ

0

Вместо того, чтобы пытаться оживить изменения самостоятельно, вы должны позвонить

[collectionView.collectionViewLayout invalidateLayout]; 

UICollectionView can't collapse or remove supplementary view

+0

Да я попытался недействительности. :) но это не сработало. –

+0

Это не работает. Как я узнал, только CollectionCells может иметь этот тип анимации. дополнительные представления нужно будет анимировать каким-либо другим способом (вручную) и синхронизировать некоторые с анимацией остальной части представления. Так что нет хорошего способа это сделать. это печально недостаток CollectionView. –

Смежные вопросы