2011-09-05 3 views
1

세로로 구성된 2- 뷰 NSSplitView에서 하위 뷰를 전환 (대체)하는 방법을 알아 내려고합니다. 나는 내 NSSplitView 서브 클래스에서 다음과 같은 방법을 사용하여 반 가공있어 :NSSplitView 서브 뷰를 Core Animation으로 바꾸기

애니메이션 설정하려면

- (void)awakeFromNib { 
    // set delegate 
    [self setWantsLayer:YES]; 
    CATransition *transition = [CATransition animation]; 
    [transition setType:kCATransitionPush]; 
    [transition setSubtype:kCATransitionFromBottom]; 
    [transition setDuration:1.0]; 
    [self setAnimations:[NSDictionary dictionaryWithObject:transition 
                forKey:@"subviews"]]; 
} 

을 그리고 수행 : 그러나이 코드를

- (void)replaceRightView:(NSView *)newView animated:(BOOL)animate { 
    NSRect currentSize = [[[self subviews] objectAtIndex:1] frame]; 
    [newView setFrame:currentSize]; 

    if (animate) { 
     [[self animator] replaceSubview:[[self subviews] objectAtIndex:1] 
            with:newView]; 
    } else { 
     [self replaceSubview:[[self subviews] objectAtIndex:1] 
         with:newView]; 
    } 
} 

을 분할의 오른쪽에있는 서브 뷰가 아니라 전체 NSSplitView를 끄는 효과가 있습니다.

서브 뷰 전환 만 애니메이션 처리 할 수 ​​있습니까? 아마도 잘못된 애니메이션 키 ("하위보기")를 사용하고 있습니까? 다른 애니메이션 방법도 괜찮을 것입니다.

감사합니다.

답변

1

그것은 아마도 가장 깨끗한 방법은 아니지만, 나는 다음 NSSplitView의 서브 뷰 I로 구성되어 컨테이너 뷰의 프레임을 맞게 사용자 정의와 함께 새로운 서브 뷰의 프레임을 수정 addSubview:replaceSubview:withView: 방법을 NSView의 '용기'서브 클래스를 사용하여 종료 움직이기를 원했습니다. 그런 다음 컨테이너보기에서 CATransition을 설정하면 모든 것이 제대로 작동합니다.

관련 문제