2013-12-16 24 views
5

我試圖讓this animation如何實現這種細胞與動畫UICollectionView

對於列表,我想我可以用UICollectionView,但動畫的部分似乎是棘手。

對此有何想法?

+0

對於UICollectionViewCell的動畫,在委託方法UICollectionView的decelarating當動畫單元的層.. –

+2

每當用戶開始滾動,可見細胞的層移動到特定「-y」 poisition和動畫和還原y位置當收集視圖減速方法..讓我知道這是否有道理.. –

+1

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

回答

3

如果你的意思是彈性動畫部分,那不是非常棘手 - 蘋果在UIDynamics(僅適用於iOS7 +)的代碼中有一個完全相同的行爲演示。

有,看起來非常接近,你是什麼後,這裏另一個例子:

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

看,中間爲一個動畫的例子。它甚至使用集合視圖。

+0

這是非常接近我需要的,但我想我的應用程序支持iOS6。 – jAckOdE

+0

這將是完整的解決方案(UICollectionView + iOS6動態),如果我能找到iOS6的UIDynamic的克隆。它可能是Box2d的包裝。我會進一步看。 – jAckOdE

1

由於@肯代爾說,你真的需要嘗試UIDynamics

對於快速的解決方法,我只是嘗試下面的代碼。它的工作原理有點和你的代碼有關。 我不瞭解表現。所以它可能會在你的項目中造成性能不足。

這只是一個想法。如果它不適合你,請保持原樣。

- (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

在AppleView的簡單示例代碼中使用此代碼(使用此代替塊樣式代碼:[self performSelector:@selector(restore :) withObject:cell afterDelay:0.5];)它在iOS 6中不起作用。在iOS 7中,它僅對插入到集合視圖中的新單元進行動畫處理。 – jAckOdE

+0

因爲我們在'cellForRowAtIndexPath:'方法中有這個代碼,所以不會爲屏幕中的可見單元調用它。爲此,您需要創建單元格而不重複使用,否則需要處理'scrollViewDidScroll:'UIScrollView'的委託方法中的可見單元格的動畫('UICollectionView'是'UIScrollView'的子類)。希望你能得到我說的。 –