Mam UICollectionViewController, który używa standardu UICollectionViewFlowLayout
do wyświetlania pojedynczej pionowej kolumny komórek. Próbuję utworzyć animację rozwijania/zwijania w komórce po dotknięciu komórki. Używam następujący kod do osiągnięcia tego celu:UICollectionView Animacja zmiany rozmiaru komórki powoduje niepożądane zachowanie.
- (void)collectionView:(UICollectionView *)collectionView didSelectItemAtIndexPath (NSIndexPath *)indexPath
{
[self.feedManager setCurrentlySelectedCellIndex:indexPath.item];
[self.collectionView performBatchUpdates:nil completion:nil];
}
- (CGSize)collectionView:(UICollectionView *)collectionView layout:(UICollectionViewLayout*)collectionViewLayout sizeForItemAtIndexPath:(NSIndexPath *)indexPath
{
//Return the size of each cell to draw
CGSize cellSize = (CGSize) { .width = 320, .height = [self.feedManager heightForCellAtIndexPath:indexPath] };
return cellSize;
}
Nieruchomość „selectedCellIndex” na moim zarządzającego obiektem opowiada model danych powrotu rozszerzoną lub zwinięty rozmiaru wewnątrz heightForCellAtIndexpath:
[self.collectionView performBatchUpdates:nil completion:nil];
wtedy performBatchUpdates:completiong:
Metoda animuje ten rozmiar ładnie się zmienia. Jednak! Gdy animacja się pojawi, rozwijająca się komórka może spowodować, że częściowo widoczna komórka na dole ekranu zniknie z ekranu.
Jeśli tak jest, a następnie zwijam tę komórkę, komórka teraz poza ekranem zostanie przyciągnięta do starej pozycji bez animacji, podczas gdy wszystkie inne widoczne komórki będą animowane zgodnie z potrzebami. Moja intuicja mówi, że jest to prawidłowe zachowanie, ponieważ komórka jest poza ekranem podczas animacji zwijania i nie jest uwzględniana w procesie renderowania animacji. Moje pytanie brzmi: jak temu zapobiec?
Wolałbym wszystkie komórki animować razem, niezależnie od tego, czy są poza ekranem, czy nie. jakieś pomysły?
Znalazłem bardzo podobny problem podczas przeglądania http://stackoverflow.com/questions/13698275/uicollectionview-moveitematindexpathtoindexpath-issues-moving-items-not-on-scr –
Wygląda na to, że ponownie wykorzystywane komórki stają na drodze animacji, ponieważ komórka poza ekranem jest oznaczana jako gotowa do ponownego użycia. Jakieś przemyślenia na temat zapobiegania umieszczaniu komórki w celu ponownego użycia? –
Mam dokładnie ten sam problem i naprawdę podoba mi się rozwiązanie, nawet jeśli to rozwiązanie jest numerem radaru! – jrturton