2017-11-25 11 views
1

View Controller에서 몇 개의 뷰를 레이아웃해야합니다.UIScrollView 내에서 뷰의 내용 크기 설정

enter image description here

처음 백색 도면 그림과 같이 부분적으로 아래쪽에 푸른도 담당 할 것이다. 파란색보기는 그대로두고 파란색보기 위로 아래쪽의 흰색보기를 스크롤 할 수 있습니다.

파란색보기를보기 컨트롤러의 기본 UIView에 추가했습니다. 그런 다음 파란색보기 맨 위에 UIScrollView를 추가하고 흰색보기를 스크롤보기에 추가했습니다.

이제 나는 두려운 콘텐츠 크기 오류가 발생합니다. 나는 네면에 모두 scrollview를 고정 시켰습니다. 그런 다음 선행, 아래쪽 및 후행 제약 조건을 흰색보기에 추가했습니다. 그런 다음 흰색보기에 맨 위 제한을 추가하려고 시도했지만 오류가 계속 지속됩니다. 흰보기에 높이 제한을 추가해도 도움이되지 않습니다.

데모 프로젝트 here도 추가 했으므로 내 설정을 상상할 수 있습니다.

답변

0

here에 대한 제약 조건을 설정했습니다.

설명 : scrollView가 내용 (흰보기의) 너비와 높이를 알지 못하기 때문에 내용 크기가 불명확 해집니다.

흰색보기에 위쪽, 너비 및 높이 제한을 추가했습니다. 이 방법으로 scrollView는 내용의 너비를 알고 수직으로 만 스크롤합니다. 내용 높이 - 코드보기에서 heightContstrait의 상수를 바꿀 수 있습니다. 또는 흰색보기의 하위보기에 대해 autolayout을 올바르게 사용하면 높이 제한을 완전히 제거 할 수 있습니다.

+0

감사합니다. 그것은 실제로 작동합니다. 그러나 화이트 뷰에 상위 제약 조건을 설정하는 데 직면 한 작은 문제가 있습니다. Becuase 나는 푸른보기 동적의 높이를 만들었습니다. 기본보기의 6/10을 차지합니다. 따라서 모든 화면 크기에서 비례식으로 보입니다. 그러나 일단 내가 슈퍼 뷰에 대한 화이트 뷰의 최고 제한을 설정하면, 블루 뷰의 높이가 어떻게 변경 되더라도, 흰색 뷰는 동일한 위치를 유지합니다. 화이트 뷰의 상위 제약 조건을 동적으로 변경하는 방법이 있습니까? – Isuru

+0

topConstraint를 콘센트에 연결하고 viewDidLayoutSubviews의 코드에서 상수를 파란색보기의 높이의 일부 비율로 설정합니다. topConstraint.constant = 0.75 * 6 * view.frame.size.height/10; 또는 blueView의 콘센트를 직접 가지고 있다면 : topConstraint.constant = 0.75 * blueView.frame.size.height –

+0

알립니다. 고맙습니다 – Isuru

0

스크롤 뷰 아래에 파란색보기를 둡니다. 그리고 scrollviews content inset을 설정하여 흰색보기가 맨 위에 표시되지만 약간의 공백이 있도록하십시오. 이제 시작하면 파란색보다 약간 흰보기가 나오고 두루마리는 파란색보기를 덮습니다. 크기 오류에 관해서는 scrollview가 처음에 내용 크기를 알아야합니다. 나는 당신의 하얀보기가 테이블보기라고 가정하고, 그래서 그것이 바닥 제약을 0으로 설정한다. 파란색 크기가 스크롤 할 때 크기가 변경되도록하려는 경우 (예 : 아바타 또는 다른 것), 약간 다릅니다. uiscrolldelegate에서 스크롤 이벤트를 가져 와서 파란색보기 높이를 적절하게 변경해야합니다.