Verwenden eines benutzerdefinierten Übergangslayouts bei Navigationsübergängen von Layout zu Layout

9

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 ?

ausführen     
JYC 10.11.2013, 15:57
quelle

1 Antwort

4

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.

    
jjramos 11.04.2014 09:47
quelle