Mam widok kolekcji i wybieram efekt, w którym po kliknięciu na komórkę pojawia się cały ekran. Aby to osiągnąć, zasadniczo nazywam po prostu performBatchUpdates
wewnątrz didSelectItemAtIndexPath
, a sizeForItemAtIndexPath
wie, aby zwrócić większy rozmiar dla wybranej komórki. To wszystko działa całkiem dobrze, komórka rośnie i kurczy się zgodnie z oczekiwaniami.Jak animować wewnętrzne widoki komórki widoku kolekcji podczas zmiany jej rozmiaru?
Problem dotyczy wnętrza komórki. Komórka widoku kolekcji składa się z umiarkowanie złożonej hierarchii widoków zarządzanej przez wiązania. Chcę, aby podrzędne widoki komórki rosły i zmniejszały się wraz z animującą komórką. Niestety, moje subviews są natychmiast przyciągane do nowej pozycji, ponieważ komórka powoli animuje się do nowego rozmiaru. Jak mogę sprawdzić, czy zawartość komórki animuje się rozmiarem komórki?
Oto dwa odpowiednie metody z kontrolera widoku kolekcji:
- (CGSize) collectionView:(UICollectionView *)collectionView layout:(UICollectionViewLayout *)collectionViewLayout sizeForItemAtIndexPath:(NSIndexPath *)indexPath {
if ([collectionView.indexPathsForSelectedItems containsObject:indexPath])
return CGSizeMake(collectionView.bounds.size.width - 20, collectionView.bounds.size.height - (20 + [self.topLayoutGuide length]));
else
return CGSizeMake(260, 100);
}
- (void) collectionView:(UICollectionView *)collectionView didSelectItemAtIndexPath:(NSIndexPath *)indexPath {
[collectionView performBatchUpdates:nil completion:nil];
}
Twoje podopcje są przyciągane do miejsca najprawdopodobniej dlatego, że jakaś flaga oznaczająca rozszerzaną komórkę przełącza się z wartości false na true, a następnie wywoływana jest komenda 'layoutSubviews', która natychmiast przenosi subviews do ich rozwiniętych pozycji. Zgaduję jednak - jeśli dodasz kod, będziemy mogli zobaczyć, czy tak jest. Inna uwaga - czy komórka powinna się rozwinąć ponad inne komórki w kolekcji, czy też powinna odepchnąć je na bok? Jeśli powinien się rozwinąć, polecam dodać nowy widok nad UICollectionView i ożywić go. – Ian
Dodałem dwie odpowiednie metody, które zmieniają rozmiar w zaznaczeniu. W kontrolerze widoku jest bardzo mało innych kodów. Sama komórka to kilka plików końcówek, nic, co mogę łatwo dodać do postu. – Mike