我正在使用單元格內的圖像實現簡單的收集視圖。我想要實現的任務是當用戶點擊單元格時 - 應該有翻轉動畫,並且一些細節必須出現在同一個單元格中。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];
}
}
一個臨時的解決方案還不錯..任何人有一些更好的建議嗎?
didSelectItemAtIndexPath現在效果更好..點擊單元格..然後選擇另一個..和先前選擇的單元格翻轉回正常..但仍然有其他單元格向下滾動時出現問題..(當我向後滾動並點按在「翻轉」的單元格上 - 它們將不起作用,它們在collectionView的「不可見」部分翻轉) – mz87 2013-05-03 00:21:45