Używam UICollectionView z dwoma prototypowymi komórkami. Prototypowe komórki mają różne szerokości i zawierają różne elementy sterujące (widok obrazu i widok WWW). Z całą pewnością zwracam poprawną komórkę prototypową dla danego indeksu (wszystkie komórki wyświetlają poprawną treść), ale prototypowy rozmiar komórki jest ignorowany, a zamiast tego używany jest rozmiar elementu kolekcji. To nie tak, że ręcznie ustawiam rozmiar. Jaki jest cel pozwalający na rozmiar prototypowej komórki w storyboardie, jeśli właściwość jest po prostu ignorowana, gdy jest wyświetlana?iOS UICollectionView prototypowa właściwość rozmiaru komórki zignorowana
Odpowiedz
Rozmiar komórki w edytorze scenorysów służy tylko zaprojektowaniu komórki. Ponieważ każda prototypowa komórka może mieć inny rozmiar, UICollectionView nie wie, którą wielkość komórki wybrać dla wszystkich komórek. Dlatego ustawiasz rzeczywisty rozmiar, który chcesz użyć dla komórek osobno. Możesz to zrobić w projektancie, wybierając widok kolekcji i ustawiając kontrolkę Wielkość i wysokość rozmiaru komórki w rozmiarze "Rozmiar w perspektywie zbierania".
Można również zastąpić następującą metodę i zwrócić obiekt CGSize, który określa rozmiar, który ma być używany dla każdej komórki. Stosując tę metodę, można rzeczywiście mieć każda komórka być inny rozmiar:
- (CGSize)collectionView:(UICollectionView *)collectionView layout:(UICollectionViewLayout*)collectionViewLayout sizeForItemAtIndexPath:(NSIndexPath *)indexPath
Przykład:
- (CGSize)collectionView:(UICollectionView *)collectionView layout:(UICollectionViewLayout*)collectionViewLayout sizeForItemAtIndexPath:(NSIndexPath *)indexPath {
return CGSizeMake(100, 100);
}
Twój kontroler widok musi być delegatem UICollectionViewDelegateFlowLayout celem dla tej metody można nazwać. Więc nie zapomnij dodać, że oświadczenie delegata do pliku .h Pana zdaniem regulatora, takich jak:
@interface MyViewController() <UICollectionViewDelegateFlowLayout>
Jeśli wszystkie komórki są tego samego rozmiaru, należy po prostu ustawić właściwości wielkości komórce UICollectionView
do danego tak samo jak właściwości rozmiaru UICollectionViewCell
.
Jeśli wszystkie komórki są tej samej wielkości i można ustawić itemSize
na UICollectionViewFlowLayout
Przykład:
((UICollectionViewFlowLayout *) self.collectionViewLayout).itemSize = CGSizeMake(100, 100);
Wydaje się, że kolekcjaViewLayout.itemSize nie jest dostępna w systemie IOS6 – Sam
Można ustawić wielkość UICollectionViewCell
w UICollectionView
właściwości.
W Storyboard, Wybierz Collection View
na Document Outline
, a następnie zmodyfikuj swój Cell Size
w Size Inspector
.
Należy zmienić typ rozmiaru komórki na Domyślny, jeśli jest niestandardowy.
Swift, działa na najnowsze iOS.
(collectionView.collectionViewLayout as! UICollectionViewFlowLayout).itemSize = cellSize
nie mam wystarczająco dużo punktów, aby odpowiedzieć na Sam, ale kluczem jest to, że nie jest UICollectionViewLayout ale UICollectionViewFlowLayout.
W Swift można wywołać metodę delegowania sizeForItemAtIndexPath, aby ustawić rozmiar dla każdej komórki.
func collectionView(collectionView: UICollectionView, layout collectionViewLayout: UICollectionViewLayout, sizeForItemAtIndexPath indexPath: NSIndexPath) -> CGSize {
if indexPath.row == 0 {
// Set the size for cell no. 0
}else if indexPath.row == 1 {
// Set the size for cell no. 1
}
}
Mam nadzieję, że to pomaga. Dzięki!
Użyj domyślnego elementu Delegata. . .
- (CGSize)collectionView:(UICollectionView *)collectionView layout:(UICollectionViewLayout*)collectionViewLayout sizeForItemAtIndexPath:(NSIndexPath *)indexPath
{
CGSize mElementSize;
mElementSize = CGSizeMake(SCREEN_WIDTH , SCREEN_HEIGHT *0.60);
return mElementSize;
}
- 1. IOS: Wybór UICollectionView komórki przez długie naciśnięcie
- 2. @ Właściwość JsonTypeInfo została zignorowana podczas deserializacji POJO
- 3. Animacja UICollectionView zmiana rozmiaru i położenia komórek otaczających komórki
- 4. UICollectionView Animacja zmiany rozmiaru komórki powoduje niepożądane zachowanie.
- 5. UICollectionView registerCell - puste komórki
- 6. Zapętlając wszystkie komórki w UICollectionView
- 7. Rozmiar komórki UICollectionView w AutoLayout
- 8. UICollectionView usunąć komórki (odpowiednik commitEditingStyle)?
- 9. UICollectionView Dodawanie obrazu do komórki
- 10. iOS: przeładować pojedynczą komórkę UICollectionView
- 11. Przebieg alfabetyczny IOS dla uicollectionview
- 12. Tworzenie iOS UICollectionView przewijany z PullToRefreshView
- 13. Zmiana rozmiaru komórek UICollectionView po ustawieniu ich danych
- 14. Zapętlając wszystkie komórki w widoku UICollectionview
- 15. Identyfikacja komórki po pobraniu lokalizacji w UICollectionView
- 16. Wyłącz wielokrotne użycie komórki na UICollectionView
- 17. Inny rozmiar komórki w widoku UICollectionview
- 18. Właściwość komórki tabeli ignoruje szerokość
- 19. UICollectionView Auto komórkowych Rozmiar z autoLayout iOS 8
- 20. iOS UICollectionView wykryj kierunek przewijania
- 21. iOS 7: insertItemsAtIndexPaths: przewija UICollectionView
- 22. UICollectionView like Home Screen iOS
- 23. Metoda zignorowana, niezaakceptowana
- 24. Czcionka zignorowana w Chrome
- 25. Autoresize Wysokość UICollectionView w celu dostosowania do rozmiaru zawartości
- 26. Właściwość identyfikatora iOS przestarzała
- 27. Dynamiczna zmiana rozmiaru dodatkowego widoku UICollectionView (zawierającego multilinię UILabel)
- 28. JavaScript i funkcja prototypowa przypisanie
- 29. Komórka prototypowa wielokrotnego użytku UITableView
- 30. Widok UICollection Dopasuj rozmiar komórki do rozmiaru ekranu
Użyłem niestandardowego wyciągnięcia, aby dodać warstwy gradientu, uilim i uiimage w komórce widoku uicollection, a rysunek nie był prawidłowy. Umieszczenie tego kodu w moim głównym kontrolerze widoku rozwiązało problem. – MGM
Jeśli wszystkie komórki mają ten sam rozmiar, bardziej efektywnym sposobem określenia rozmiaru jest ustawienie go w 'UICollectionViewFlowLayout'. na przykład 'flow.itemSize = CGSizeMake (50,100);' –
Ale czy jest jakiś sposób, aby programowo uzyskać dostęp do prototypowej komórki z metody '-collectionView: layout: sizeForItemAtIndexPath:'? (Zapisywanie numeru komórki za pomocą identyfikatora ponownego użycia nie działa, ponieważ to kończy się wywołaniem metody określania rozmiaru, co powoduje nieskończoną pętlę). – erikprice