Ich setze die Eigenschaft UICollectionViewController
von useLayoutToLayoutNavigationTransitions
auf 'YES', um Layout für Layoutübergänge für -[UINavigationController pushViewController:animated:]
und popViewControllerAnimated:
durchzuführen. Außerdem habe ich Pinch-Gesten-basierte interaktive Übergänge implementiert.
Außerdem habe ich eine benutzerdefinierte UICollectionViewTransitionLayout
definiert, die sich vom ursprünglichen Verhalten von UICollectionViewTransitionLayout
unterscheidet. Ich erstelle eine Instanz meines "CustomLayoutTransition" -Objekts und gebe es von -[UICollectionViewDelegate collectionView:transitionLayoutForOldLayout:newLayout:]
zurück.
Ich erwarte zwei Verhaltensweisen, wenn ich das tue
CustomLayoutTransition
wird verwendet, um benutzerdefinierte Layout-Layout-Übergänge auszuführen
1) wenn der interaktive Übergang durch eine Pinch-Geste oder durch einen Trigger ausgelöst wird
2) wenn ich eine Instanz von UICollectionViewController
drücke / öffne, z. B. durch Aufruf von [UINavigationController pushViewController:animated:]
Meine Erwartung # 1 scheint richtig zu sein, aber # 2 ist nicht richtig; Es scheint, dass, wenn ich programmgesteuert push / pop mache, das ursprüngliche, von Apple bereitgestellte UICollectionViewTransitionLayout
anstelle meines benutzerdefinierten Übergangslayouts verwendet wird.
Ist es normal, dass UICollectionViewTransitionLayout
in diesem Fall anstelle meines benutzerdefinierten Übergangslayouts verwendet wird?
Wenn dies ein normales Verhalten ist, gibt es eine Möglichkeit, den benutzerdefinierten Übergang zum Ausführen von Layout-zu-Layout-Übergängen zu verwenden, wenn Sie programmgesteuert pushing / popping UICollectionViewController
?
Dies ist eher eine Problemumgehung als eine richtige Lösung, aber stellen Sie sich vor, Sie möchten das Layout ändern, indem Sie Folgendes verwenden:
%Vor%Wenn Sie jedoch Ihr eigenes UICollectionViewTransitionLayout bereitstellen möchten, können Sie die obige Zeile ersetzen durch:
%Vor%und die Delegate-Methode
%Vor%wird wie erwartet aufgerufen.
Ich würde wiederum erwarten, dass die Delegate-Methode aufgerufen wird, ohne dass der Übergang auf diese seltsame Weise ausgelöst werden muss, aber nicht.
Tags und Links ios uicollectionview cocoa-touch uicollectionviewlayout transition