다음은 스프링 및 스트럿과 함께 여러 NSSplitViewDelegate
크기 조정 및 제한 방법과 함께 구현되었으며 원하는대로 작동합니다. 이제는 setFrame
메시지와 NSSplitViewDelegate
메서드를 모두 autolayout
제약으로 바꾸면 동일한 시나리오에서 autolayout
을 채택하려고합니다.NSSplitView에서 Autolayout을 사용하여 예기치 않은 동작이 발생했습니다.
내 메인 창의보기에는 OuterSplitter의 수퍼 뷰에 대해 0으로 설정된 상/하/좌/우 앞과 뒤 공간 제약 조건이있는 세로 분할보기 (나는 OuterSplitter라고 부름)가 있습니다.
OuterSplitter의 오른쪽 창에는 InnerSplitter의 상단, 하단, 왼쪽 및 오른쪽 맨 앞과 뒤쪽 공간 제약 조건이 0으로 설정된 superview
의 또 다른 세로 분할보기 (InnerSplitter 호출)가 있습니다. (예 : OuterSplitter의 오른쪽 창).
OuterSplitter의 왼쪽 창에 대한 공칭 최소 너비 제약 조건과 InnerSplitter의 왼쪽 및 오른쪽 창 둘 다에 대한 공칭 최소 너비 제약 조건을 설정했습니다.
주 창 크기를 조정할 때 최소 너비 제약 조건 중 하나가 적용되지 않는 한 원하는 동작으로 InnerSplitter의 왼쪽 창에 확장 및 축소의 전체 또는 대부분이 적용됩니다. 따라서 OuterSplitter의 왼쪽 창에 대한 우선 순위는 260 (가장 높음)으로, 오른쪽 창의 250으로 분할보기를 설정했습니다. 또한 InnerSplitter의 왼쪽 창에 대한 보류 우선 순위는 245 (가장 낮음)이고 오른쪽 창의 255입니다.
저는 WWDC 2012에서 232 세션에 대한 비디오를 보았으며 올바른 방향으로 가고 있다고 생각했습니다. 내 autolayout
제약 조건은 대부분 원하는대로 작동하지만 Spring 및 Struts 버전에서는 발생하지 않는 매우 이상한 동작이 있습니다.
InnerSplitter의 분할 막대가 가장 오른쪽으로가는 경우 (InnerSplitter 오른쪽 창은 최소 크기 임) 외부 스플리터 분할 막대가 최대한 멀리 왼쪽으로 이동하지 않으면 드래그하려고 할 때 InnerSplitter의 스플리터 바가 오른쪽으로 멀어지면 예기치 않게 OuterSplitter의 분할 막대가 왼쪽으로 이동하여 InnerSplitter의 왼쪽 패널이 커지고 OuterSplitter의 왼쪽 창이 축소됩니다. 내 기대는 그 경우 크기 조정이 일어나지 않아야한다는 것입니다.
오른쪽에 고정되어있는 InnerSplitter의 분할 막대를 당길 때 OuterSplitter의 분할 막대가 움직이지 않도록 할 수 있습니까? 그렇다면 어떤 제약 조건을 추가해야합니까? 또는 NSSplitViewDelegate
방법 중 일부가 여전히 필요합니까? 감사.
현재, Xcode 4.6.3을 사용하고 있으며 OSX 10.8을 타겟팅하고 있습니다.
다음은 베어 본 데모입니다. https : // github.com/Whiffer/Test-Autolayout –