Mam widok kolekcji z niestandardowym układem przepływu i wieloma różnymi komórkami o różnej wysokości. Szerokość widoku kolekcji zmienia się na obrót urządzenia, więc szerokość komórek musi się odpowiednio zmienić. Aby to działało, zaimplementowałem metodę "sizeForItemAtIndex" i zwracam różne rozmiary w zależności od aktualnej orientacji interfejsu. Większość komórek nie zmienia ich wysokości, jednak istnieje jedna komórka, którą chcę rozwinąć i zwinąć za każdym razem, gdy użytkownik ją kliknie. Można założyć, że komórka ma tylko jeden UILabel z jednym lub kilkoma wierszami tekstu. Gdy komórka pojawia się po raz pierwszy, liczba linii jest ustawiona na 1, a gdy użytkownik kliknie komórkę, liczba linii jest ustawiona na 0, a tutaj komórka powinna użyć wewnętrznego rozmiaru etykiety, aby automatycznie zmienić jej wysokość . Jak mogę osiągnąć ten efekt? Oto przykład tego, co powinno wyglądać następująco: UICollectionViewCell expand/collapse o rozmiarze wewnętrznym
Odpowiedz
Wykonaj następujące kroki:
1). Tworzyć logiczną zmienną o nazwie isExpanded
zarządzać rozwinąć/zwinąć
2.) dodaj cel i działania na pokaz przycisk więcej
[yourCellName.btnShowMore addTarget:self action:@selector(ShowMoreButtonClicked) forControlEvents:UIControlEventTouchUpInside];
3.) W sizeForItemAtIndexPath do zarządzania wysokość, dodać:
- (CGSize)collectionView:(UICollectionView *)collectionView layout:(UICollectionViewLayout*)collectionViewLayout sizeForItemAtIndexPath:(NSIndexPath *)indexPath
{
if (isExpanded && indexPath.row == 0) {
return CGSizeMake(CGRectGetWidth(self.view.frame), calculated height for the expanded cell);
}
return CGSizeMake(CGRectGetWidth(self.view.frame), default height);
}
4) Następnie, w sposobie ShowMoreButtonClicked
- (void)ShowMoreButtonClicked{
if (isExpanded) {
isExpanded = FALSE;
[collection_viewCus reloadItemsAtIndexPaths:@[[NSIndexPath indexPathForRow:0 inSection:0]]];
}
else {
isExpanded = TRUE;
[collection_viewCus reloadItemsAtIndexPaths:@[[NSIndexPath indexPathForRow:0 inSection:0]]];
}}
5.) Dodaj tę linię w cellForItemAtIndexPath
[yourCellName layoutIfNeeded];
6.) Budowa & run
Dobra robota, spędziłam ostatnią noc zastanawiając się i powiedziałam "odpowiem na to jutro" i bum, tutaj jest – MoMo
Czy jest jakiś sposób, aby automatyczny układ automatycznie obliczył wysokość? – almas
yes, zwróć ten rozmiar dla komórki: - CGSize CellSize = [system twojego CellLayoutSizeFittingSize: UILayoutFittingCompressedSize withHorizontalFittingPriority: UILayoutPriorityDefaultHigh verticalFittingPriority: UILayoutPriorityDefaultLow]; – Mihawk
Poprzedniego odpowiedź jest dobra, ale jeśli chcesz trochę animacji trzeba zrobić, to trzy etapy:
1.Invalidate swoją collectionViewLayout
self.collectionView.collectionViewLayout.invalidateLayout()
2.Reload pożądane indexPath lub wszystkich danych wewnątrz bloku performBatchUpdates
collectionView.performBatchUpdates({
self.collectionView.reload(at: DESIRED_INDEXPATH)
}, completion: nil)
3.Return nowa wysokość oblicza się metodą sizeForItemAtIndexpath
delegata
- 1. Bitset o zmiennym rozmiarze
- 2. wektor o stałym rozmiarze
- 3. tablica sortowania o rozmiarze n
- 4. std :: array o rozmiarze zero
- 5. UICollectionViewCell Shake
- 6. .NET znajdź podajnik papieru o rozmiarze
- 7. Python Selenium Wyślij klucze ostrzegające o rozmiarze
- 8. Przydzielanie tablic o tym samym rozmiarze
- 9. Używanie próbki() o rozmiarze próbki = 1
- 10. Znajdź pliki o rozmiarze w systemie Unix
- 11. CGImage utworzyć miniaturę obrazu o pożądanym rozmiarze
- 12. Identyfikacja nazwy właściwości o niskim rozmiarze
- 13. Utwórz nowy wektor o stałym rozmiarze
- 14. Jak utworzyć obszar tekstowy o rozmiarze TinyMCE?
- 15. android.database.CursorIndexOutOfBoundsException: wymagany indeks 0, o rozmiarze 0
- 16. Jak otworzyć JFileChooser o wstępnie zdefiniowanym rozmiarze
- 17. Utwórz nowy plik o określonym rozmiarze
- 18. Tworzenie obszaru tekstowego bootstrap o stałym rozmiarze
- 19. Jak zadeklarować tablicę ciągów o nieznanym rozmiarze?
- 20. Brak błędu dla tablicy o rozmiarze ujemnym
- 21. Dopasuj krotkę o nieznanym rozmiarze w scala
- 22. Jak słuchać informacji o użytkownikach dla UICollectionViewCell w systemie iOS?
- 23. UICollectionViewCell Auto Layout
- 24. UICollectionViewCell Border/Shadow
- 25. Przedstawianie UIPopoverController z UICollectionViewCell
- 26. Animacja UICollectionViewCell on Tap
- 27. centrum swift positionate UICollectionViewCell
- 28. UICollectionViewCell kolor cienia
- 29. Jak powiększać UIScrollView wewnątrz UICollectionViewCell?
- 30. Czy pliki o rozmiarze 0 bajtów to naprawdę 0 bajtów?
można dodać co próbowałem do tej pory i jakie wyniki dostajesz? – MoMo