私はInterface Builderを介してNSArrayControllerにバインドされたNSCollectionViewを持っています。NSCollectionViewsをソートする配列コントローラ - > NSCollectionViewItemsフレームを明示的にアニメーション化
私はNSAnimationContextを介して暗黙のアニメーションに依存しているので、私のCALayersがアニメーション化することが要求されている唯一のキーは@ "隠されている"ため、配列をフィルタリングしてソートするためにNSSortDescriptorsとNSPredicatesを提供します。フレーム原点をアニメートして、セルが視覚的に新しい位置に移動するようにしたいと思います。
私はこれまでコレクションビューのアニメータープロパティを使用してperformBatchUpdateを行い、挿入、削除、移動をアニメーション化し、結果として@ "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];
}
おかげで、任意の洞察力が高く評価されます!