2011-01-27 4 views
2

이 문제를 단어에 넣기는 어렵지만 실제 예제가 도움이 될 것입니다. iTunes 앱을 보면 Sidebar | Content 스플릿의 경우 NSSplitView이고 소스 목록 및 아트웍 패널의 경우는 NSSplitView입니다.NSSplitView NSSplitView의 크기에 프로그래밍 방식으로 제한된 하위 뷰 크기

enter image description here ======는>

사이드 바 얇게 디바이더를 끌어 enter image description here는 작품 뷰 (내측 NSSplitView의 하반부)는 오른쪽 종횡비를 유지하기 위해 짧아. 이것은 내가 따라온 행동입니다.

바깥 쪽 NSSplitViewdelegate을 sideBarController를 가리 키도록 연결하여 크기 조정을 얻고 분할보기의 하단 부분을 프로그래밍 방식으로 조정할 수 있습니다. 이 문제의 절반이 제대로 작동하고 있습니다. 즉, 사이드 바를 바꿀 때 사이드 바 패널에 따라 크기가 조정됩니다.

공격 할 때 문제가되는 것은 중첩 된 NSSplitView의 높이가 변경 될 때 사이드 바 폭의 크기를 조정하는 방법입니다. 나는 원래이 splitview의 내부 분할기를 드래그 할 수 없도록 만드는 방법을 찾으려고 노력했지만 그렇게 할 방법을 찾지 못했습니다. 내가 지금 설정하는 방법은 내부 splitview를 위젯이 기본 splitview를 소유하고있는 windowController로 설정 한 다음 높이를 계산하여 정보 패널의 너비를 변경하는 것입니다.

물론 하나의 크기를 변경하면 다른 splitview의 크기가 변경되어 원본 크기가 다시 적용되어 무한 루프가 만들어집니다. 나는 깃발과 타이머를 추가하여이 작업을 시도해 볼 수는 있지만 이미이 기능을 구현하기 위해 곡물을 다시 본 것처럼 보입니다.

중첩 된 splitview 패널을 부모 폭이나 더 일반적으로 제한하는 방법은 무엇입니까? iTunes의 "Selected Item/Now Playing"보기의 크기 조정 동작을 복제하는 가장 좋은 방법은 무엇입니까? 당신이 할 수있는 것입니다 내 CHLayoutManager에서 당신은 살펴 본다 시도 할 수

답변

3

: 당신의 mySplitView 크기가 변경 이제 때마다

[mySplitView setLayoutName:@"splitview"]; 
CHLayoutConstraint *constraint = [CHLayoutConstraint constraintWithAttribute: CHLayoutConstraintAttributeHeight relativeTo:@"splitview" attribute: CHLayoutConstraintAttributeWidth]; 
[mySplitView addConstraint:constraint]; 

, 그것은 자동 폭에 맞게 뷰의 높이를 업데이트합니다.

상황에 따라 조금 더 복잡한 작업이 필요할 수도 있지만 이는 일반적인 생각입니다.

+0

답변 해 주셔서 감사합니다. 이것은 문제의 절반을 쉽게 처리 할 것입니다. 그러나 사용자가 내부 뷰의 크기를 조정할 때 어떤 일이 일어나면 외부 뷰의 크기를 조정해야하고 두 개의 뷰 컨트롤러 사이에서 펑키 로직을 가져야하는 제약 사이클을 가져야합니다. . 이 문제를 해결할 방법이 없습니까? 안쪽 분리보기의 수동 크기 조절을 비활성화 할 수 있다면 해결책은 놀라 울 정도로 – coneybeare

+0

@coneybeare 일 것입니다. 그것은 당신의 견해가 어떻게 중첩되어 있는지와 그 외의 것들에 달려 있습니다. 그러나 CHLayoutManager는 제한 조건주기를 수행하지 않습니다. 각보기는 변경 알림마다 한 번 처리되고 제약 조건은 추가 된 순서대로 처리됩니다. –

+0

감사합니다. – coneybeare

관련 문제