0

我正在使用單元格內的圖像實現簡單的收集視圖。我想要實現的任務是當用戶點擊單元格時 - 應該有翻轉動畫,並且一些細節必須出現在同一個單元格中。UICollectionViewCell爲選定/突出顯示的項目添加動畫

我已經嘗試了很多東西來實現這一點,例如我在單元格的ContentView上添加了兩個視圖。當用戶按下按鈕時,我調用了transitionToView方法,並且一切正常,除了當列表包含超過9-10張圖片時,在滾動列表後,一些單元格開始無意義地重複「翻轉」視圖。我關閉了dequeueReusableCellWithReuseIdentifier函數,並且一切正常,但在像iPhone4這樣的老設備上,應用程序的運行速度很慢。

所以最好的解決辦法,我發現是這樣的:

- (UICollectionViewCell *)collectionView:(UICollectionView *)cv cellForItemAtIndexPath:(NSIndexPath *)indexPath; 
{ 

    UICollectionViewCell *cell1 = [cv dequeueReusableCellWithReuseIdentifier:kCellID3 forIndexPath:indexPath];enter code here 

    UIView *contents = [[UIView alloc]initWithFrame:cell1.bounds]; 
    contents.layer.borderColor = [[UIColor colorWithRed:0.119 green:0.108 blue:0.222 alpha:1]CGColor]; 
    contents.layer.borderWidth = 10.0f; 
    contents.backgroundColor = [UIColor yellowColor]; 
    [cell1.contentView addSubview:contents]; 

    UIView *backgroundView = [[UIView alloc]initWithFrame:cell1.bounds]; 
    backgroundView.layer.borderColor = [[UIColor colorWithRed:0.529 green:0.808 blue:0.922 alpha:1]CGColor]; 
    backgroundView.layer.borderWidth = 4.0f; 
    backgroundView.backgroundColor = [UIColor greenColor]; 
    cell1.selectedBackgroundView = backgroundView; 
    [cell1 bringSubviewToFront:cell1.selectedBackgroundView]; 

    return cell1; 
} 

但有可能當細胞變爲選中要添加一些動畫的事件?

- (void)collectionView:(UICollectionView *)collectionView didSelectItemAtIndexPath:(NSIndexPath *)indexPath 
{ 
    UICollectionViewCell *cell1 = [collectionView cellForItemAtIndexPath:indexPath]; 

    UIView *toSwitch = cell1.contentView; 
    [UIView transitionFromView:toSwitch toView:cell1.selectedBackgroundView duration:0.33 options:UIViewAnimationOptionCurveLinear |UIViewAnimationOptionTransitionFlipFromLeft completion:nil]; 

} 

也該嘗試毀了我的細胞 - 當一個或多個單元格翻轉一些其他抄起吧..

所以我需要一個動畫(我取得了什麼),但我需要保持其他UICollectionView單元格獨一無二,並且不要重複使用此翻轉視圖。

請大家幫忙! :)真的很絕望!

在此先感謝

一些解決方案:

- (void)collectionView:(UICollectionView *)collectionView didEndDisplayingCell:(UICollectionViewCell *)cell forItemAtIndexPath:(NSIndexPath *)indexPath 
{ 
    if(cell.selected) 
    { 
     [cell setSelected:NO]; 
     [collectionView deselectItemAtIndexPath:indexPath animated:NO]; 
     UIView *toSwitch = cell.contentView; 
     [UIView transitionFromView:cell.selectedBackgroundView toView:toSwitch duration:0.001 options:UIViewAnimationOptionCurveLinear |UIViewAnimationOptionTransitionFlipFromLeft completion:nil]; 
    } 
} 

一個臨時的解決方案還不錯..任何人有一些更好的建議嗎?

+0

didSelectItemAtIndexPath現在效果更好..點擊單元格..然後選擇另一個..和先前選擇的單元格翻轉回正常..但仍然有其他單元格向下滾動時出現問題..(當我向後滾動並點按在「翻轉」的單元格上 - 它們將不起作用,它們在collectionView的「不可見」部分翻轉) – mz87 2013-05-03 00:21:45

回答

2

滾動時,「舊單元格」被重用 - 這就是您的表格視圖執行得很好的原因。當然,如果有問題的單元格有轉換的視圖,它會顯示一個。

因此,與您在每次調用cellForItemAtIndexPath函數時重新設置單元格中的數據一樣,您必須將正確的視圖設置爲可見 - 記住單元格視圖的狀態與使用數據一樣,然後顯示細胞出現時的相應視圖。

相關問題