2012-02-25 1 views
4

안녕하세요, 저는 NSSplitView의 최대 및 최소 좌표를 제한하려고합니다. 뷰 컨트롤러를 만들고 NSSplitView의 델리게이트로 할당했습니다. 대리자 메서드가 호출되지만 분할 뷰는 내가 설정하려고하는 위치를 제한하지 않습니다. 내가 뭘 잘못하고 있는지에 대한 제안이 있니?NSSplitView를 제약하는 방법은 무엇입니까?

- (CGFloat)splitView:(NSSplitView *)splitView constrainMinCoordinate:(CGFloat)proposedMinimumPosition ofSubviewAt:(NSInteger)dividerIndex 
{ 
    NSLog(@"Constrain min"); 

    if (proposedMinimumPosition < 75) 
    { 
     proposedMinimumPosition = 75; 
    } 

    return proposedMinimumPosition; 
} 

- (CGFloat)splitView:(NSSplitView *)splitView constrainMaxCoordinate:(CGFloat)proposedMax ofSubviewAt:(NSInteger)dividerIndex 
{ 
    NSLog(@"Constrain max"); 

    if (proposedMax > 200) 
    { 
     proposedMax = 200; 
    } 

    return proposedMax ; 
} 

답변

0

이렇게하면 문제가 해결됩니다.

- (BOOL)splitView:(NSSplitView *)splitView canCollapseSubview:(NSView *)subview 
{ 
    return NO; 
} 
+0

10.10에서 나를 위해 작동하지 않습니다. – SpaceDog

1

의 당신이 수직 분할에 두 개의 섹션 각각은 적어도 70.0 높아야한다고 가정합시다, 당신은이 작업을 수행했던 것과 :

- (CGFloat)  splitView:(NSSplitView *)splitView 
    constrainMinCoordinate:(CGFloat)proposedMin 
       ofSubviewAt:(NSInteger)dividerIndex 
{ 
    return 70.0; 
} 

- (CGFloat)  splitView:(NSSplitView *)splitView 
    constrainMaxCoordinate:(CGFloat)proposedMin 
       ofSubviewAt:(NSInteger)dividerIndex 
{ 
    return splitView.frame.size.height - 70.0; 
} 

빼기위한 이유는 동적를하다 전체 NSplitView 인스턴스의 크기 조정 (예 : 자동 레이아웃)을 설명합니다. 수평으로 작업하는 경우 .height 대신 .width을 계산해야합니다. 서브 뷰가 2 개 이상인 경우 dividerIndex를보고 적절하게 값을 적용하여 아이디어를 확장 할 수 있습니다.