2014-04-04 1 views
1

이미 최소 너비와 최대 너비를 지정하는 제약 조건이있는 NSView의 너비를 명시 적으로 설정합니까?더 크고 작은 제약 조건을 가진 유연한 NSView의 명시적인 너비 설정

예를 들어, NSSplitView이 창에 삽입 된 것으로 간주하십시오.

  • width >= 200.0 @ 1000
  • width <= 400.0 @ 1000
다음 Inspector이 두 제약 조건을 가지고

--------------------------------- 
|    |     | <- NSSplitView 
|    |     | 
| Inspector | Content  | 
|    |     | 
|    |     | 
|    |     | 
--------------------------------- 

--------------------------------- 
|        | 
|        | 
|   Content    | 
|        | 
|        | 
|        | 
--------------------------------- 

: 분할 뷰의 왼쪽 창에서 오른쪽 창에 Inspector 동안은 일부 콘텐츠입니다

분할보기의 유일한 제한 사항은 수퍼 뷰를 채울 수있는 제한 사항과입니다은 수퍼 뷰 (오른쪽 분할 자 창)를 채우기위한 제약 조건으로 만 봅니다.

이보기를 만들 때 Inspector의 초기 너비를 동적 값 (사용자의 환경 설정에 저장 한 것)으로 설정하고 싶습니다.

하지만 난 그냥 순진 같은 것을 할 경우 :

  • width = 320.0 @ 1000
    • 그런 다음 분할보기가 더 이상보기 크기를 조정할 수 수 없게됩니다. 499749의 값도 같은 문제를 일으 킵니다. 내가 좋아하는 일에 우선 순위를 낮추면 :

      • width = 320.0 @ 250

      그런 다음 분할 뷰의 크기를 조정하지만, 초기 창 폭은 인터페이스 빌더에서 설정 마련 아웃로, 320.0 아니라 400.0 없습니다.

      궁극적 인 목표는 Inspector 모두가 주어진 범위 내에서 조정할 수 있도록하는 것입니다, 또한 숨길 수 또는 어느 난 그냥 width0로 설정하는 기대했다 (완전히 붕괴하고, 0minWidth 제약 등 잘).

      내가 아래로 가서 수동으로 [layout]에서 이것을 처리 할 수 ​​있을지는 모르겠지만, 제약 조건을 완전히 달성 할 수있는 방법이 있는지 궁금합니다.

      (참고 :이 레이아웃의 대부분은 인터페이스 빌더에서 수행되고 있지만 필요-수는 10.8+뿐만 아니라 좋은 경우 프로그램의 제약을 처리 할 수 ​​매우 행복 해요..)

    답변

    0

    당신이 -[NSSplitView setAutosaveName:]를 사용하여 시도 되세요 NSSplitView가 사용자의 환경 설정을 저장하고 시작시 초기 너비로로드하는 작업을 수행하도록하려면?


    당신이 그 길을 가고 싶지 않다면, 당신은 당신의 첫 번째 본능과 꽤 비슷한 것을 할 수 있습니다.

    width = 320.0 @ 1000 제약 조건을 추가 한 후에는 창 레이아웃을 [window layoutIfNeeded]으로 설정 한 다음 해당 제약 조건을 제거해야합니다.

    인스펙터보기는 업데이트 된 프레임을 갖지만 강제적으로 존재하는 제약 조건은 사라져서보기의 크기를 조정할 수 있습니다.

    +0

    'setAutosaveName'의 문제점은 앱을 실행 한 후 프로그래밍 방식으로 관리자를 여러 번 토글 할 수 있기를 원한다는 것입니다. 제약이 없다면, 적절하게'frame'을 설정하는 것일뿐입니다. 그러나 나는 현재 제약을 사용하려고합니다. 레이아웃을 강제 실행 한 직후 폭 제한을 제거하지 못했습니다. 나는 방금 minWidth 또는 maxWidth와 같을 때 빠른 테스트를하고 그 종류의 작업을 시도했지만, 다른 값의 경우에는 매번 minWidth로 뷰가 스냅됩니다. – kennyc

    +0

    스냅 백은 SplitView가보기에 설정된 우선 순위로 인해 크기를 그대로 유지하기 때문에 가능성이 높습니다. 아직 변경하지 않았습니까 (예 : 관리자가 아닌 창으로 내용의 크기를 조정하려면)? 추가하려는 제약 조건을 원한다면 제약 조건을 우선 순위보다 높게 설정하십시오. 그러나 언급 한 것처럼 499 미만입니다. 이렇게하면 해당 제약 조건을 통해 너비를 결정할 수 있지만 여전히 사용자가 끌 수 있습니다. 드래그 할 때 업데이트해야합니다. 그렇지 않으면 나중에 되돌아갑니다. – Taylor

    +0

    우선 순위와 제약 조건을 완벽하게 조합 한 것은 아니지만 필요에 따라 제약 조건을 추가하고 제거하는 힌트가 올바른 경로를 명확하게 설정하므로이 내용을 저에게 답으로 표시 할 것입니다. 어떤 단계를 거치게되는지는 상황에 따라 다소 좌우되지만, 동적으로 제약 조건을 추가하고 제거한다는 일반적인 생각은 나에게 도움이 될 것입니다. 감사. – kennyc