UICollectionView targetContentOffsetForProposedContentOffset: withScrollingVelocity: funktioniert nicht?

8

Ich habe Probleme, targetContentOffsetForProposedContentOffset:withScrollingVelocity: mit einem benutzerdefinierten UICollectionViewFlowLayout zu bearbeiten.

Ich möchte eine sehr grundlegende Änderung, bei der die Sammlungsansicht das "Blättern der Seite" alle 936 Pixel (statt 1024) stoppt, dies ist für ein iPad im Querformatmodus.

Dafür habe ich meine Sammlungsansicht wie folgt eingerichtet ...

%Vor%

Der folgende Code wird korrekt aufgerufen, aber das Ergebnis wird ignoriert oder so, weil der Seitenumlauf immer noch alle 1024px auftritt.

TvGuideFlowLayout.m

%Vor%

Ich habe versucht, einen negativen Wert zu verwenden und dennoch hat es das 1024-Ding gemacht.

Ich habe versucht, ihm einen sehr kurzen Versatz zu geben (alle 468px), und die Sammlungsansicht scrollt überhaupt nicht, sondern springt einfach zurück zur Startposition.

Warum funktioniert das nicht einfach? Es scheint, dass das Ergebnis dieses Aufrufs nur ein Vorschlag oder nur verwendet wird, wenn eine andere Bedingung erfüllt ist.

    
Juan Carlos Ospina Gonzalez 05.08.2014, 12:25
quelle

1 Antwort

18

Sie haben pagingEnabled für die Sammlungsansicht festgelegt, wodurch wahrscheinlich alles überschrieben wird, was Sie mit dem Layout tun. Diese Eigenschaft bewirkt, dass die Sammlungsansicht nicht mehr mit den Vielfachen der Inhaltsgröße scrollt.

Sie haben zwei Möglichkeiten:

  1. Deaktivieren Sie pagingEnabled und verwenden Sie die Delegatenmethode für die Bildlaufansicht - (void)scrollViewWillEndDragging:(UIScrollView *)scrollView withVelocity:(CGPoint)velocity targetContentOffset:(inout CGPoint *)targetContentOffset . Der Nachteil davon ist, dass das Snapping-Verhalten und das Feeling von Paging sehr fein abgestimmt sind und es schwierig wird, es exakt zu replizieren.
  2. Hör auf, es selbst zu versuchen und benutze pagingEnabled . Der Nachteil hier ist, dass Sie die Sammlung die Größe der "Seite" des Inhalts anzeigen lassen müssen, die möglicherweise nicht das ist, was Sie wollen (vermutlich wollen Sie einen Teil der anderen "Seiten" links und rechts sehen?). Sie können dies umgehen, indem Sie verhindern, dass die Teilansichten der Sammlungsansicht abgeschnitten werden. Dies kann jedoch die Wiederverwendung von Zellen beeinträchtigen und Sie können seltsame visuelle Artefakte erhalten, je nachdem, wie viele Zellen sich auf einer Seite befinden.
jrturton 07.08.2014, 15:38
quelle