1

Я хочу анимировать мою ячейку коллекции, так что, когда я касаюсь ее, изображение открывается из-под нее и в основном расширяется в пространство, слегка подталкивая ячейку под ним. Я попытался использовать это: UICollectionView: Animate cell size change on selection, но не смог заставить его работать правильно.Как увеличить cellview ячейку на didselect, чтобы показать больше информации?

Вот что я пробовал.

- (void)collectionView:(UICollectionView *)collectionView didSelectItemAtIndexPath:(NSIndexPath *)indexPath 
{ 

    [((FeedCell *)[collectionView cellForItemAtIndexPath:indexPath]) setIsSelected:YES]; 

    [collectionView.collectionViewLayout invalidateLayout]; 
    __weak FeedCell *cell = (FeedCell *)[self.photoCollectionView cellForItemAtIndexPath:indexPath]; // Avoid retain cycles 
    void (^animateChangeWidth)() = ^() 
    { 
     CGRect frame = cell.frame; 
     frame.size = CGSizeMake(frame.size.width, 420); 
     cell.frame = frame; 
    }; 

    // Animate 

    [UIView transitionWithView:[collectionView cellForItemAtIndexPath:indexPath] duration:0.5f options: UIViewAnimationOptionCurveLinear animations:animateChangeWidth completion:nil]; 

} 



- (CGSize)collectionView:(UICollectionView *)collectionView layout:(UICollectionViewLayout*)collectionViewLayout sizeForItemAtIndexPath:(NSIndexPath *)indexPath { 

    if(((FeedCell *)[self.photoCollectionView cellForItemAtIndexPath:indexPath]).isSelected == YES){ 
     return CGSizeMake(320, 420); 
    } 
    return CGSizeMake(320, 320); 

} 

У меня есть пользовательская ячейка CollectionView, и у нее есть свойство isSelected. Я не уверен, что я должен сделать для xib ячейки (будь то отображение карты там, CGSize - выбранный размер или невыбранный размер и т. Д.) Любая помощь будет действительно оценена!

+0

Вы когда-нибудь находили решение для этого? – Andrespch

+0

nope к сожалению нет. но я не пытался слишком долго, я просто изменил интерфейс, который планировал сделать. – mjmayank

ответ

-1

Я пытаюсь сделать то же, что и вы, и нашел свой вопрос в моем поиске. Похоже, у вас есть довольно хорошее решение (по крайней мере, по моему неопытенному мнению). Что не работает для вас? Я сделал это, чтобы сделать то, что хотел, скопировав свой код почти дословно. Я изменил несколько вещей, но не тестировал код перед внесением изменений. Вот что у меня есть, что работает для меня в моем методе didSelectItemAtIndexPath:

__weak MyCell *cell = (MyCell*)[collectionView cellForItemAtIndexPath:indexPath]; 
[cell setSelected:YES]; 

[collectionView.collectionViewLayout invalidateLayout]; 
void (^animateChangeWidth)() = ^() 
{ 
    CGRect frame = cell.frame; 
    frame.size = CGSizeMake(frame.size.width, 340.0f); 
    cell.frame = frame; 
}; 

// Animate 

[UIView transitionWithView:cell duration:0.5f options: UIViewAnimationOptionCurveEaseInOut animations:animateChangeWidth completion:nil]; 

Я также преодолено CollectionView: макет: sizeForItemAtIndexPath поэтому я предполагаю, что работает для вас.

Извините, я не могу быть более конкретным. Это поможет, если вы скажете, что с этим не работает.

+0

Спасибо за проголосовало. Может быть, комментарий, объясняющий, что не так, или для лучшего решения? –

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