2013-08-13 2 views
1

컨테이너 뷰에 3 개의 서브 뷰 (UILabel, UIImageview, UIButton)를 배치했습니다. 모든 하위 뷰는 시각적 형식 언어 (VFL)를 사용하여 배치됩니다. 하위보기에는 선행, 위쪽 가장자리 등으로부터 채우기가 있습니다. 하위보기의 내용은 동적이어서 크기가 항상 변경됩니다. 모든 서브 뷰에 정확히 맞도록 수퍼 뷰 (컨테이너 뷰)의 크기를 조정하려고합니다. 자동 레이아웃으로 가능합니까? 나는 여기서 이해할 수없는 본질적인 크기를 제안하는 링크를 보았다. 누군가가 이것을 달성 할 수있는 더 좋은 방법을 제안 할 수 있습니까?서브 뷰에 따라 수퍼 뷰의 크기 조정

답변

2

예, 가능합니다. 하위 뷰 컨텐츠에 따라 수퍼 뷰의 크기를 조정하려는 경우 고유 컨텐츠 크기를 사용하는 것이 좋습니다.

뛰어난 Wanderlich 사이트에는이 글을 잘 설명하는 자습서가 있습니다. 그것은 Beginning Auto Layout in iOS 6: Part 2/2입니다 :

자동 레이아웃하기 전에, 당신은 항상 버튼 및 기타 컨트롤을 이야기했다

고유 컨텐츠 크기 그들은 중 하나를 자신의 프레임 또는 경계 속성을 설정하거나 그들을 크기를 조정하여 어떻게해야 큰 인터페이스 빌더. 그러나 은 대부분의 컨트롤이 콘텐츠에 따라 필요한 공간을 정확히 결정할 수 있다고합니다.

레이블은 의 길이와 그 글꼴의 글꼴 크기가 인 텍스트를 알고 있기 때문에 글꼴의 너비와 높이를 알고 있습니다. 마찬가지로 텍스트를 배경 이미지와 결합하고 둥근 모서리에 대해 약간의 패딩을 지정할 수있는 버튼에 대해서도 마찬가지입니다.

세그먼트 컨트롤, 진행률 막대 및 다른 대부분의 컨트롤에 대해서도 마찬가지입니다. 일부 컨트롤은 미리 지정된 높이 만 가질 수 있지만 알 수없는 너비는 있습니다.

이것은 고유 한 콘텐츠 크기로 알려져 있으며 자동 레이아웃에서 중요한 개념입니다 ( ). 이미 버튼을 사용하여 동작을 보았습니다. 자동 레이아웃 (Auto Layout)은 컨트롤의 크기를 묻고 은 해당 정보를 기반으로 화면을 레이아웃합니다.

0

가능합니다.

필자는 세그먼트 컨트롤에 둥근 모서리를주고 싶었습니다. 이를 위해 UIView에 분할 컨트롤을 삽입했습니다. 이제 세그먼트 화 된 컨트롤의 크기에 따라 해당 컨테이너 뷰의 크기를 조정해야합니다.

나는 단지 다음과 같은 제약을 주었고 모든 것이 스스로 처리되었습니다.

(1) 컨테이너보기를 선택하고 XY 제약 조건을 지정하십시오.

  • 슈퍼 볼 수있는 공간.
  • 슈퍼 볼 수있는 최고 공간.|

(2) 컨테이너보기를 선택하고 Leading을 제공 Trailing | Top | Bottom 제약.

  • 세그먼트 컨트롤에 대한 선행 공백.
  • 분할 영역 제어에 대한 상위 공간.
  • 세그먼트 컨트롤에 대한 후행 공백.
  • 분할 컨트롤에 대한 하단 공간.

(3)는 분할 제어를 선택하고 그것과 HeightWidth 제약을 준다.

  • 높이 : 30 // 무엇이든
  • 폭 : 내가 높이와 내 세그먼트 제어의 폭을 변경하는 경우 이제 자동으로 컨테이너 뷰의 크기 (슈퍼 뷰를 조정 // 무엇이든

(250) 세그먼트 화 된 제어의).

관련 문제