2014-07-09 13 views
8

Ich versuche, dies zur Zeit zu replizieren:Replication Googles Suche iOS Karten-Animation

enter image description here

Wenn Sie mit Google-App vertraut sind, es sieht aus wie ein UICollectionView mit einem benutzerdefinierten Flow Layout.

Ich erweitere eine Frage, die mit etwas zusätzlichem Code geschlossen wurde.

Here's the link to the other question.

In der benutzerdefinierten Strömungs Layout-Klasse, kann ich einen „gestapelt“ Effekt erzeugen, indem einen negativen minimalen Linienabstandswert einstellen, und mit dem folgenden:

- (NSArray *)layoutAttributesForElementsInRect:(CGRect)rect 
{ 
    NSArray *allAttributesInRect = [super layoutAttributesForElementsInRect:rect]; 

    CGPoint centerPoint = CGPointMake(CGRectGetMidX(self.collectionView.bounds), CGRectGetMidY(self.collectionView.bounds)); 

    for (UICollectionViewLayoutAttributes *cellAttributes in allAttributesInRect) 
    { 
     if (CGRectContainsPoint(cellAttributes.frame, centerPoint)) 
     { 
      cellAttributes.transform = CGAffineTransformIdentity; 
      cellAttributes.zIndex = 1.0; 
     } 
     else 
     { 
      cellAttributes.transform = CGAffineTransformMakeScale(0.75, 0.75); 
     } 
    } 

    return allAttributesInRect; 
} 

das streich Animationen löschen funktionieren gut, aber ich habe Probleme, den "gestapelten" Look zu erstellen und dann nur eine Zelle in die Ansicht zu ziehen, während die restlichen Karten wie oben abgebildet gestapelt bleiben.

+0

hey. Ich versuche, den gleichen Effekt zu reproduzieren, allerdings mit wenig Erfolg. Ich brauche die Karten, um Teil einer UICollectionView/UITableView zu sein, so dass der Benutzer mehr scrollen kann als nur einige Karten wie Google hat. Aber ich kann Ihnen versichern, dass die Art und Weise, wie Google diese App erstellt hat, nicht mit einer Sammelansicht übereinstimmt. Ich habe die App in Reveal überprüft und sie haben die Animation im Grunde nur mit Ansichten gemacht. trotzdem brauche ich eine collectionview und die einzige Art, wie ich es sehen kann, ist mit zwei Layouts, dass Sie den Übergang zwischen animieren können. es dauert viel mehr Zeit aber – alex

+0

Ein Video oder GIF des Effekts, den Sie suchen, würde Ihnen helfen, eine Antwort zu bekommen. – Segev

Antwort

0

Ich sehe zwei Teile zu dieser Ansicht. 1. Ein Stapel von "Karten" & 2. Eine Tabelle von Stapeln. Wenn man es so zerlegt, ist es viel einfacher zu handhaben.

Es sollte ziemlich einfach zu Unterklasse UIView sein, um eine "Karte" zu erstellen (ich nenne es UICardView), die Sie herumziehen können. Einen "Stapel" davon zu erstellen sollte auch nicht zu schwierig sein. Ich sehe den schwierigsten Teil darin, effizient einen Schlagschatten hinzuzufügen.

Der zweite Teil enthält viele bewegliche Teile: Hinzufügen dieser Stapel zu einer Tabelle. Wirklich, die Tabelle wird für reibungsloses Scrollen und konsistente Abstände verwendet und ist in der Tat vollständig transparent. Sie müssten die Höhe für jeden Stapel von "Karten" für heightForRowAtIndexPath: berechnen.

Dieser Ansatz ermöglicht ein reibungsloses Scrollen, einen relativ geringen Speicherbedarf und einen hohen Anpassungsgrad relativ einfach. Zusätzlich sollten diese kleineren Teile einfach zu warten sein und zusätzliche Funktionen enthalten.