我有一個集合視圖,其佈局由UICollectionViewFlowLayout實例管理。我有一個長按手勢識別器連接到集合視圖,其工作是檢測長按是否發生在集合視圖中某個單元格的邊界內,如果是,請在動態更改單元格變換後刪除該單元格。替換默認的UICollectionViewCell刪除動畫
這是由手勢識別所執行的動作的相關部分:
UICollectionViewCell *cell = [self.collectionView cellForItemAtIndexPath:indexPath];
[UIView animateWithDuration:2.0 animations:^{
cell.layer.transform = CATransform3DMakeScale(1.0, 0.0, 1.0); // an example animation - squish the cell vertically
} completion:^(BOOL fin) {
//[cell.layer removeAllAnimations];
[self.model.numb3rs removeObjectAtIndex:[indexPath row]]; // update model
[self.collectionView deleteItemsAtIndexPaths:[NSArray arrayWithObject:indexPath]]; // delete item
}];
的問題是,該刪除方法似乎在其上不膠凝孔的細胞執行其自身的特性的變化/動畫與我的動畫。例如,在這裏試圖實現的效果中,一旦單元格被垂直完全壓扁,我希望它不會再次顯示在視圖中,但deleteItemsAtIndexPaths:調用會導致單元格的「鬼魂」顯示出來然後隨着該方法執行其自己的變換和不透明度動畫而淡出。
我接近完全錯了嗎?可能收集視圖體系結構提供了一種更好的方式來執行我想要的操作,而不是明確地對單元格進行動畫處理,然後像我想要的那樣刪除它。
我希望我可以在這裏得到一個快速的答案,而不必深入研究文檔。