2013-07-25 3 views
2

autolayout을 사용할 때 intrinsicContentSize를 호출하면 뷰 내용에 맞게 CGSize를 결정하는 방법 인 것 같습니다.iOS Autolayout intrinsicContentSize = -1

그러나이 메서드는 제한된 수의 기존 UIView에 대해서만 지원됩니다. 사용자 정의보기를 만들 때마다 컨테이너 UIView 내부의 UILabel처럼 단순한보기 일지라도보기가 포함되어 있으면 intrinsicContentSize (-1을 반환)를 확인할 수 없습니다.

뷰가 제대로 화면에 표시 할 수 있습니다 아직보기도 자신의 높이를 알고하지 않는 이유 이해가 안 ... 컨테이너보기

UILabel의 간단한 예이지만, 나는 약간 더 복잡한 UIView를 다루고 있는데, 여기서 서로 15 개의 뷰가 중첩되어있다. 하위 뷰를 모두 포함하는 뷰의 크기를 결정하기 위해 수동으로 자체 intrinsicContentSize 메서드를 만들고 하위 뷰의 모든 높이를 더한 시간이 많이 소요되는 작업을 수행해야합니다. 제약 조건. 이 과정은 끔찍합니다. 하위보기 또는 제한 중 하나의 높이를 추가하는 것을 잊어 버려서 어딘가 높이를 놓칠 수 있습니다. 또한이 문제는 동적 하위 뷰를 사용하면 더욱 복잡해집니다. 예를 들어, 뷰에 동적 하위 뷰의 2 열이있는 경우 각 열의 하위 뷰 + 제약 조건의 높이를 수동으로 찾고이 높이를 비교하여 큰 것을 반환해야합니다. 다시 한번 말하지만, 이것은 간단한 예일뿐입니다. 그러나 종종 그렇게 단순하지 않아서 많은 편두통을 유발합니다.

이전에 물어 본 내용으로 돌아 가기. iOS에서보기를 표시 할 수있는 방법은 무엇입니까? 그 높이가 무엇인지 알아내는 방법이 있어야합니다. 읽어 주셔서 감사합니다.

다음은 내가 원하는 것을 시각화하는 데 도움이되는 이미지입니다.

답변

0

자동 레이아웃을 사용하는 모든 하위보기가 자동으로 수행됩니까? MyCompositeObject를 배치하기 위해 자동 레이아웃을 사용하는 경우 제약 조건을 사용하여 복합 객체가 여러 객체를 배치하는 것입니까? 나는 그렇다면, intrinsicContentSize가 모든 서브 뷰를 설명 할 것이라는 것을 알았지 만 그렇지 않다면 UIView의 본질적인 컨텐츠 크기가 정확하지 않고 작아 진 결과를 보지 못할 것입니다.

관련 문제