2016-08-27 7 views
2

인터페이스 작성기를 통해 NSArrayController에 바인딩 된 NSCollectionView가 있습니다. 세포가 시각적으로 새로운 위치로 이동하도록 프레임 원점을 애니메이션으로 만들고 싶습니다.NSCollectionViews 바인딩 배열 컨트롤러 -> 명시 적으로 NSCollectionViewItems 프레임 애니메이션

이전에는 collection 뷰 애니메이터 속성을 사용하여 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]; 
} 

덕분에 어떤 통찰력에 감사드립니다!

답변

0

컬렉션보기의 모든 코드와 설정을 보지 않으면 도움이되지 않습니다. 그것은 다양한 스타일과 레이아웃을 가질 수 있습니다. "콘텐트 배열"레이아웃이있는 콜렉션 뷰는 바인딩 된 NSArrayController의 sortDescriptors를 변경하자마자 항목을 즉시 활성화합니다.

https://github.com/emankovski/AnmatedCollectionSort

:

나는 (죄송 목표 - C를 할 수 없다) 스위프트에 당신을 위해 예를 생성
관련 문제