2014-08-28 4 views
0

많은 정보를 여기 저기 읽고 결과없이 성공하려고 시도한 후 주제에 새로운 질문을 씁니다.인터페이스 빌더 문제의 UIScollView 및 자동 레이아웃

작업이 간단 해 보입니다. 나는 ScrollView를 가지고있다. UIView 유형의 하위 뷰가 하나 있습니다 (ContentView라고 부름). 내용보기에는 UIView 유형의 하위보기가 2 개 있습니다 (ViewA 및 ViewB라고합시다).

-ScrollView 
    -ContentView 
     -ViewA 
     -ViewB 

ScrollView에는 수퍼 뷰의 모든 가장자리에 바인딩되는 4 가지 제약 조건이 있습니다. ViewA에는 위, 왼쪽 및 오른쪽의 세 가지 제약 조건 (ContentView에 대해)이 있습니다. ViewB에는 아래, 왼쪽, 오른쪽 및 높이의 4 가지 제약 조건 (ContentView에 대한)이 있습니다. ViewA의 하단과 ViewB의 상단 사이에 또 ​​다른 제약이 있습니다. 아이디어는 런타임에 ContentView의 프레임을 변경하고 ViewA와 ViewB의 크기와 레이아웃이 그에 따라 자동으로 변경된다는 것입니다.

글쎄, 작동하지 않습니다. ContentView에서 ScrollView로 다른 제약 조건을 넣으려고했으나 시도하지 않았습니다. 다른 결과가 있지만 그 중 어느 것도 맞지 않습니다. 예를 들어, ContentView에는 ScrollView에 대한 4 가지 제약 조건 (위, 아래, 왼쪽 및 오른쪽)이 있습니다. 런타임에 ContentView의 프레임을 설정합니다. 그러나, 그것은 리셋되고 결국 ContentView 프레임은 기본적으로 높이 제약이있는 ViewB의 높이를가집니다.

귀하의 도움에 감사드립니다.

답변

0
  1. 콘텐츠보기의 프레임을 설정하지 마십시오.
  2. viewA에 제약 조건을 추가하여 높이를 정의해야합니다.
+0

내가 그렇게 추가하지 않습니까? ViewA의 높이는 ContentView 크기와 ViewB 고정 높이를 고려하여 자동으로 계산되어야합니다. 그렇지 않으면이 예제에서 제약 조건의 목적을 이해하지 못합니다. 나에게는 런타임에 뷰의 크기를 조정해야합니다. 그렇지 않으면 모든 프레임을 명시 적으로 설정할 수 있습니다. 내부보기의 너비도 있습니다. 당신의 말에 따르면, 나는 그것을 설정해야합니다. 하지만 그 아이디어는 런타임에 (ContentView의) 런타임시 하나의 프레임 만 설정하고 내부의 모든 내용은 레이아웃이됩니다. – Ingweland

+0

scrollView에서 자동 레이아웃을 사용하는 것은 분명 직관이 아니므로 주제에 대한 Apple의 기술 노트를 읽는 것이 좋습니다. https : //developer.apple.com/library/ios/technotes/tn2154/_index.html "Pure Auto Layout Approach"섹션을 읽으십시오. 이런 식으로하면 동적 인 레이아웃을 가질 수 있습니다. 기억해야 할 중요한 점은 scrollView 내부의 모든 뷰는 폭/높이를 정의하거나 UILabel과 같은 고유 크기를 갖는 명시 적 제한 조건을 가져야한다는 것입니다. –

+0

이미 여러 번 읽습니다. 이해하려고 노력 중입니다. 결국, IB에서 모든 것을 설정하는 것은 옵션이 아니라고 생각합니다. – Ingweland

관련 문제