2013-05-13 4 views
0

NSOutlineView의 표시/숨기기 버튼을 제거하고 싶습니다. 따라서 NSOutlineView을 덮어 쓰고 mouseDown 이벤트를 얻습니다. 다음은 코드입니다.NSOutlineView 스크롤 애니메이션이 작동하지 않습니다.

-(void)mouseDown:(NSEvent *)theEvent 
{ 
    NSLog(@"LeftFolderListOutlineView mouseDown"); 
    [super mouseDown:theEvent]; 

    NSPoint localPoint = [self convertPoint:theEvent.locationInWindow 
            fromView:nil]; 
    NSInteger row = [self rowAtPoint:localPoint]; 

    id clickedItem = [self itemAtRow:row]; 

    if (![clickedItem isKindOfClass:[NSDictionary class]]) { 
     return; 
    } 


    if ([self isItemExpanded:clickedItem]) { 

     [[self animator] collapseItem:clickedItem]; 

    }else{ 
     [[self animator] expandItem:clickedItem]; 
    } 

} 

그것은 나에게 왜 말 working.Anyone 아니라이 경우 NSOutlineView 붕괴 또는 expand.But가 어떻게이 문제를 개선 할 수있는 스크롤 애니메이션해야 하는가?

답변

0

'표시/숨기기 버튼'(개요 셀)을 제거하려면 NSOutliveView 하위 클래스에 - (NSRect)frameOfOutlineCellAtRow:(NSInteger)row 메서드를 구현하고 NSZeroRect를 반환 할 수 있습니다.

NSOutlineView 축소/확장 애니메이션은 animator을 통해 애니메이션화 할 수 없습니다.

OS 10.7 이상에서만 애니메이션 효과가 축소/확장됩니다. 따라서 별도의 구현을 제공하는 데 필요한 구형 OS 버전을 지원할 계획이었습니다.

OS 10.6 이하에서 붕괴/확장 애니메이션을 제공하려면 NSOutlineView의 'drawRect'를 재정의해야합니다.

- 업데이트 -

미안하지만, 나는 중요한 점을 소홀히했습니다. 10.7 확장/축소 애니메이션은 사용자가 개요 셀을 클릭 할 때만 자동으로 시작됩니다. 기본 윤곽선 셀없이 애니메이션을 표시하려면 애니메이션 효과를 수동으로 구현하는 것 외에는 다른 방법이 없다고 생각합니다.

나는 그림 그리기와 함께 확장/축소 애니메이션 효과를 구현하는 샘플 프로젝트를 만들었습니다. 여기에 소스 코드를 확인하십시오 : https://github.com/roh0sun/ovanimation

+0

내 시스템은 OS 10.7이고, 애니메이션 작동 방법을 알고 싶습니다. – gohamgx

+0

당신의 프로젝트가 이미지 그리기 애니메이션을 완료 할 수 있다고 생각합니다. 그러나 확장/collapse 애니메이션이 여전히 작동하지 않습니다. – gohamgx