2012-12-07 18 views
6

Podklasowałem UICollectionViewLayout. Jak na razie dobrze.
Jednak mam kilka komórek, które są szersze niż ekran, a czasem te znikają podczas przewijania. Kiedy przewiniesz więcej, magicznie pojawią się tam, gdzie powinny. Mogę pokazać ci mój kod, ale myślę, że nie ma w tym nic złego, ponieważ działa w 90% przypadków. Jednak naprawdę duże komórki (ponad dwa razy większy rozmiar ekranu) czasami znikają.Duże znikające UICollectionViewCell z niestandardowym układem

NSMutableArray* attributes = [NSMutableArray array]; 
for (int section=0; section < [[self collectionView] numberOfSections]; section++) { 
    [attributes addObject:[self layoutAttributesForSupplementaryViewOfKind:UICollectionElementKindSectionHeader atIndexPath:[NSIndexPath indexPathForItem:0 inSection:section]]]; 
     for (int row=0; row < [[self collectionView] numberOfItemsInSection:section]; row++) { 
      NSIndexPath* indexPath = [NSIndexPath indexPathForItem:row inSection:section]; 
      [attributes addObject:[self layoutAttributesForItemAtIndexPath:indexPath]]; 
     } 
} 
return attributes; 

mam również te posty: UICollectionView's cell disappearing i Large cells in a UICollectionView getting removed while the cell is still displayed Jednak to rozwiązanie nie jest wymienione. Czy ktoś może mi w tym pomóc? Czy to możliwe, że problem leży po stronie Apple? A jeśli tak, czy jest coś, co mogę zrobić, aby rozwiązać to sam?

Odpowiedz

5

Przykro mi to powiedzieć: jestem pewien, że to prawdziwy błąd w UICollectionView; Kilka tygodni temu natknąłem się na to samo. Zrobiłem mały program, aby zademonstrować błąd i złożyłem RADAR z Apple, ale nie usłyszałem, czy lub jeśli planują go naprawić. Najlepszym rozwiązaniem, jakie mogę wymyślić (Ostrzeżenie: nie wprowadziłem jeszcze tego obejścia) jest zauważenie, że atrybuty układu są bardzo odległe od krawędzi ekranu, celowo zmieniają granice atrybutów komórek, tak że tylko nieznacznie znikają ekran i ewentualnie przechowaj to przesunięcie (wartość, która została obcięta z rzeczywistych granic) jako dodatkowe niestandardowe pole w elementach layoutu, aby twoja komórka wiedziała, że ​​poprawnie narysowała treść. To wydaje się być brutalnym hackerem, ale powinno działać.

+0

Czy słyszałeś z powrotem w interweniujący czas? –

0

Czy na pewno zwracany jest właściwy obiekt atrybutu dla tej komórki, gdy wywoływana jest metoda -(NSArray*)layoutAttributesForElementsInRect:(CGRect)rect, a gdy rect jest tylko częścią komórki?

+0

Użytkownicy zgłaszają również problemy z bardzo dużymi komórkami. Zobacz: http://stackoverflow.com/questions/13016302/large-cells-in-a-uicollectionview-getting-removed-while-the-cell-is-still-displa?rq=1 – CitronEvanescent

Powiązane problemy