2013-05-02 11 views
5

Mam UICollectionView, który umieszcza swoje komórki za pomocą Flow Layout. Jest przewijany pionowo.Układ komórki UICollectionView znajduje się poza granicami widoku kolekcji

Wypełnia ekran 320x480 i wyświetla niestandardową UICollectionViewCell, która zawsze ma 96 * 96 - rozmiar jest ustawiany w Konstruktorze interfejsów, a delegat nie implementuje metod ustalania wielkości elementu dla poszczególnych elementów.

Istnieją wypustki po lewej i prawej stronie, które mają po 10 pikseli, a minimalny odstęp wynosi 6 pikseli.

Co się dzieje, to 3 komórki na linię poziomą.

< -10-> < 96 ---- ----> < -6-> < 96 ---- ----> < -6-> < ---- 96 --- -> < -10-> = 320.

Problem polega na tym, że czasami kładzie 4 komórki w jednym wierszu! Czwarta komórka jest najczęściej poza ekranem. Następnie ustawia tylko 2 komórki na następnej linii, aby to zrekompensować. Cały układ przepływu jest taki, że jest to układ łamania linii, który nie powinien niczego niszczyć poza ekranem!

Mam załączeniu obrazek:

enter image description here

Proszę pamiętać, że w drugim rzędzie jest czwarty punkt głównie na ekranie.

Naprawdę nie mam pojęcia, co może być przyczyną. Komórki są dynamicznie wypełniane danymi, ale ich rozmiar jest stały. Komórki we wszystkich innych wierszach pasują dobrze, więc nie ma powodu, dla którego w niektórych wierszach powinno to nastąpić.

Ten błąd występuje w różnych miejscach za każdym razem, gdy jest aktualizowany widok kolekcji. to znaczy. może się zdarzyć w rzędzie 2, a następnie po aktualizacji może się zdarzyć w rzędzie 10 i tak dalej.

Widok kolekcji jest aktualizowany za pomocą licznika czasu. Timer w zasadzie wywołuje funkcję, która przetwarza niektóre dane, a następnie używa dispatch_async (do głównej kolejki), tablica zawierająca dane podkładu jest aktualizowana i wywoływana jest [collectionView reloadData]. Dlatego nie zaktualizowałem widoku kolekcji z żadnego wątku poza głównym wątkiem. Tablica podkładu jest aktualizowana tylko w głównej kolejce i w tej funkcji; nie z innego miejsca.

Czy ktoś może mi doradzić, co może być nie tak.

Dzięki

Odpowiedz

Powiązane problemy