2009-10-03 2 views
4

메일 앱과 비슷한보기가 있습니다. 스크롤보기가 있고 다른 많은 하위보기가 있습니다. 사용자가 텍스트 뷰를 클릭하면 펼쳐 텍스트가 표시됩니다. 예 : "to"필드에 입력하십시오. 확장 된 영역 아래에서 시작되도록 다른 하위 뷰의 크기를 조정하려고합니다. 어떻게해야합니까?하나의 하위보기 크기가 변경 될 때 다른 하위보기 및 상위보기의 크기를 조정하는 방법

나는 IB를 통해보기를 만들었고 이것을 촉진하기 위해 유연한 위쪽 여백으로 표시했습니다. 하지만 자동으로 아무 일도 일어나지 않아서 sizethatFits/setneedsLayout을 호출해야하는지 궁금합니다.

답변

6

하위보기의 크기가 조정되면 [[self superview] setNeedsLayout]으로 전화하십시오. 슈퍼 뷰에서 실제 레이아웃을 수행하려면 -layoutSubviews을 구현하십시오. 너는 모든 것을 스스로 계산해야 할 것이다. 고정/유연 마진은 피어 뷰가 아닌 수퍼 뷰의 크기를 조정하는 것과 관련이 있습니다. 기본값 -layoutSubviews은 아무 작업도 수행하지 않습니다. 적절한 시간에 호출됩니다.

레이아웃을 특정 지점에서 강제 실행해야하는 경우 본인 또는 수퍼 뷰에서 -layoutIfNeeded으로 전화 할 수 있습니다. 이 방법의 작동 방식에 관한 문서를 읽으십시오. 일반적으로 당신이 이것을 부를 필요는 없습니다. -setNeedsLayout을 사용하면 보통 적절한 시간에 호출됩니다.