0

저는 모달 식으로 표시 될 뷰 컨트롤러를 가지고 있으며 해당 VC에는 scrollview가 있습니다. 그러나, 스크롤보기를 추가하는 것은 일반적으로 내 segue가 '현재 모달 형식'일 때 작동하지 않는 것처럼 보입니다. 나는 스크롤 뷰를 다른 뷰에 넣어서 작동시켜야한다는 어딘가를 읽었다. 그래서 내 뷰 계층 구조입니다 :Scrollview 'present modally'보기 컨트롤러가 작동하지 않습니다.

이 뷰 A에 대한 내 제약 조건은 다음과 같습니다

있는 ScrollView 제약 :

ViewB 제약 :

그리고 ViewB에서 필자는 최상위 뷰를 부여한 또 다른 뷰를 가지고 있습니다. & right 제약 조건은 superview에 0입니다. 나는이 코드를 다음과 같이 설정했다 :

override func viewDidLayoutSubviews() 
{ 
    viewB.frame.size.height = 2000 
    scrollView.contentSize = viewB.frame.size 
} 

그러나 스크롤 뷰는 여전히 스크롤되지 않는다. 도움을 줄 수있는 사람 덕분에 ... 잠시 동안 붙어 있습니다.

답변

1

문제는 ViewB 제약 조건에 포함 된 스크롤 뷰에 제약 조건을 지정했기 때문입니다. 당신이 그 접근법을 택할 것이라면 괜찮습니다. 스크롤 뷰의 contentSizecontentSize 속성이 아니라 ViewB의 크기에 의해 결정된다는 것을 의미합니다. 따라서 코드 viewDidLayoutSubviews은 쓸모가 없으므로 첫 번째 이동은 버려야합니다.

이제 입니다. ViewB 's 크기? 스크롤 뷰의 크기와 동일하게 만든 ViewB 너비와 높이 구속 조건을 부여했기 때문에 아쉽게도 스크롤 뷰의 크기와 같습니다. 그러므로 스크롤 할 것이 없습니다.

해결책은 코드에서 수행하려고했던 제약 조건을 수행하는 것입니다. 즉, ViewB에 높이 제약 조건 대신 2000으로 고정 된 높이 제약 조건을 지정하는 것입니다.

+0

그런데 화면에 빨간색 화살표가 표시된다는 사실은 제약 조건이 나쁜 것을 의미합니다. 당신은 다른 것을하기 전에 그것을 고쳐야합니다. 나쁜 제약 조건을 진행하는 것은 의미가 없습니다. 런타임에 의미있는 인터페이스를 얻을 수 없기 때문입니다. 또한 지금 당장 스크린 샷을보고 제약 조건을 과다하게 결정하는 습관이 있으며 심각한 문제가 발생할 수 있음을 알려드립니다. – matt

+0

먼저 Matt에게 도움을 주신 것에 감사드립니다. 그리고 당신 말이 맞습니다. 저는 제 제약을 과소 평가하는 습관이 있습니다. Tho 나는 scrollview 때문에 항상 오류가 발생합니다. 내 scrollview는 고정되지 않은 높이를 가지고 있으므로 일반적으로 scrollView를 위쪽, 왼쪽, 오른쪽, 아래쪽에 고정합니다. 그러나 xCode는 스크롤 뷰에서 뷰의 너비와 높이를 지정해야한다는 오류를 던집니다. 높이는 고정되어 있지 않으므로 코드로 설정합니다. 스토리 보드에서 코드로 완전히 수행하는 것이 더 나은 방법인가요? – Moo33

+0

제 답변에서 말했듯이, 저는 당신이하려고하는 것처럼 스토리 보드의 제약을 통해 그것을하는 것을 좋아합니다. – matt

관련 문제