2013-12-16 17 views
5

Ich versuche this animationWie diese Zelle Animation mit UICollectionView implementieren

Für die Liste zu machen, ich glaube, ich UICollectionView verwenden kann, aber die Animation Teil scheint schwierig zu sein.

Irgendeine Idee zu diesem Thema?

+0

Für Animation von UICollectionViewCell, Schicht der Zell animieren, wenn der UICollectionView im Delegatmethode decelarating .. –

+2

Wenn startet Benutzer Scrollen, um die Schichten der sichtbaren Zellen auf bestimmte ‚-y‘ poisition bewegen und animieren und die Wiederherstellung y Position, wenn die Sammlung Ansicht Methode verzögern .. lassen Sie mich wissen, wenn dies sinnvoll ist .. –

+1

https://github.com/TeehanLax/UICollectionView-Spring-Demo – souvickcse

Antwort

3

Wenn Sie den springenden Animationsteil meinen, ist das nicht sehr schwierig - Apple hat eine Demo genau dieses Verhaltens in demselben Code für UIDynamics (nur iOS7 +).

Es ist ein weiteres Beispiel hier, die ganz in der Nähe sieht, was Sie nach:

http://www.objc.io/issue-5/collection-views-and-uidynamics.html

Blick in der Mitte für ein animiertes Beispiel. Es verwendet sogar Auflistungsansichten.

+0

Das ist sehr nah an dem, was ich brauche, aber ich möchte meine App zu unterstützt iOS6. – jAckOdE

+0

Das wäre fertige Lösung (UICollectionView + iOS6 Dynamic), wenn ich einen Klon von UIDynamic für iOS6 finden könnte. Es wäre wahrscheinlich ein Wrapper von Box2d. Ich werde weiter schauen. – jAckOdE

1

Wie @Kendall sagte, müssen Sie wirklich versuchen UIDynamics.

Für eine schnelle Problemumgehung habe ich nur versucht, unten Code. Es funktioniert etwas gut und hängt mit Ihrem Code zusammen. Ich weiß nichts über die Leistung. So kann es in Ihrem Projekt zu einem Leistungsmangel kommen.

Es ist nur eine Idee. Wenn es nicht für Sie funktioniert, lassen Sie es so wie es ist.

- (UICollectionViewCell *)collectionView:(UICollectionView *)collectionView cellForItemAtIndexPath:(NSIndexPath *)indexPath 
{ 
    MyCollectionViewCell *cell = [collectionView dequeueReusableCellWithReuseIdentifier:@"MyCollectionViewCell" forIndexPath:indexPath]; 

    [UIView animateWithDuration:0.2 animations:^{ 
     cell.transform = CGAffineTransformMakeTranslation(0.0, -50); 
    }]; 
    [self delayBy:0.5 code:^{ // call block of code after time interval 
     [UIView animateWithDuration:0.3 animations:^{ 
      cell.transform = CGAffineTransformIdentity; 
     }]; 
    }]; 
    return cell; 
} 
+0

Verwenden Sie diesen Code in CollectionView-einfachen Beispielcode von Apple (verwenden Sie diese anstelle von Ihrem Block Stilcode: [self performSelector: @selector (wiederherstellen :) withObject: Zelle afterDelay: 0.5];) Es funktioniert nicht in iOS 6. In iOS 7 werden nur neue Zellen animiert, die in der Sammlungsansicht eingefügt wurden. – jAckOdE

+0

Da dieser Code in der Methode 'cellForRowAtIndexPath:' enthalten ist, wird er nicht für die sichtbaren Zellen auf dem Bildschirm aufgerufen. Dazu müssen Sie die Zellen ohne Wiederverwendung erstellen oder sonst müssen Sie die Animation für sichtbare Zellen in 'scrollViewDidScroll:' Delegate-Methode von 'UIScrollView' behandeln (' UICollectionView' ist eine Unterklasse von 'UIScrollView'). Ich hoffe du bekommst was ich gesagt habe. –