2016-08-27 16 views
2

我有一個NSCollectionView通過接口生成器綁定到NSArrayController。我提供NSSortDescriptors和NSPredicates過濾和排序數組(這完全有效),但是,因爲我依靠隱式動畫通過NSAnimationContext唯一的密鑰我的CALayers請求動畫是@「隱藏」。我想動畫框架的原點,以便單元視覺移動到他們的新位置。排序NSCollectionViews綁定數組控制器 - >顯式動畫NSCollectionViewItems框架

在過去我使用集合視圖animator屬性來執行批次更新和動畫插入,刪除和移動,導致@「frameOrigin」動畫被觸發。它似乎不能以這種方式使用綁定工作?

當通過綁定支持我的NSCollectionView的ArrayController上指定排序或篩選器時,是否可以在其項目上強制顯式框架動畫?

這裏是我當前排序的代碼,以供參考:

- (void) setupSortUsingSortDescriptor:(NSSortDescriptor*) sortDescriptor selectedItem:(SynopsisMetadataItem*)item 
{ 
    NSAnimationContext.currentContext.allowsImplicitAnimation = YES; 
    NSAnimationContext.currentContext.duration = 0.5; 
    [NSAnimationContext beginGrouping]; 

    self.resultsArrayControler.sortDescriptors = @[sortDescriptor]; 

    [self updateStatusLabel]; 

    if(item != nil) 
    { 
     NSUInteger index = [self.resultsArrayControler.arrangedObjects indexOfObject:item]; 
     if(index != NSNotFound) 
     { 
      NSIndexPath* newItem = [NSIndexPath indexPathForItem:index inSection:0]; 

      NSSet* newItemSet = [NSSet setWithCollectionViewIndexPath:newItem]; 

      [self.resultsArrayControler setSelectionIndex:index]; 

      [self.collectionView.animator scrollToItemsAtIndexPaths:newItemSet scrollPosition:NSCollectionViewScrollPositionCenteredVertically]; 
     }  
    } 
    [NSAnimationContext endGrouping]; 
} 

謝謝,任何見解表示讚賞!

回答

0

如果沒有看到集合視圖的所有代碼和設置,這真的很難提供幫助。它可以有不同的風格和佈局。只要更改綁定的NSArrayController的sortDescriptors,Collection視圖就會使用「內容數組」視圖來動態展示項目。

我在斯威夫特創建了一個例子給你(不能做的Objective-C不好意思):

https://github.com/emankovski/AnmatedCollectionSort