我有一个NSCollectionView,它通过Interface Builder绑定到NSArrayController。
我提供NSSortDescriptors和NSPredicates来过滤和排序数组(完全有效),但是,由于我依靠NSAnimationContext的隐式动画,我的CALayers要求动画的唯一关键是@“hidden”。我想为框架原点设置动画,以便细胞在视觉上移动到新的位置。
在过去,我使用了集合视图动画属性来执行动画更新和动画插入,删除和移动,这导致触发了@“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 :(得分:0)
如果没有看到Collection View的所有代码和设置,真的很难提供帮助。它可以有不同的样式和布局。一旦更改了绑定的NSArrayController的sortDescriptors,带有“内容数组”布局的集合视图就可以立即激活项目。
我在Swift中为你创建了一个例子(不能做客观的抱歉):