iPhone의 화면에는 거의 항상 계층 구조가 표시됩니다.
Mail에서받은 편지함을 살펴보면 여러 가지보기가 나타납니다. 크게보기가 있습니다. [1] 그 안에는 탐색 모음보기, 표보기 및 도구 모음보기가 있습니다. 탐색 모음보기에는 각면에 단추보기가 있으며 중간에 레이블보기가 있습니다. 테이블보기 안에는 일련의 표 셀보기가 있으며 각 셀에는 여러 개의 레이블보기가 있습니다. 도구 모음에는 다섯 개의 단추보기가 있습니다. 나는 더 멀리 가서 그 버튼 안의 플레이에 대해 이야기 할 수 있지만, 당신이 그 아이디어를 얻었을 것이라고 확신합니다.
주어진보기 위의보기는 수퍼 뷰입니다. 그것 밑에 전망은 그것의 subviews이다. 그래서 테이블 셀 뷰는 슈퍼 뷰로서 테이블 뷰를 가지며, 서브 뷰로서 라벨 뷰를 가지고 있습니다. 상위 뷰는 그 안의 다른 모든 뷰를 루트 뷰라고합니다.
각보기에는 자체 그리기 화면이 있습니다. 그 그림 표면에 의해 형성된 직사각형을 프레임이라고합니다. 뷰의 프레임은 해당 뷰를 포함하는 프레임에 상대적입니다. 따라서 테이블 셀의 레이블 하위 뷰 중 하나가 (0,0)에 프레임이 있으면 셀이 화면의 중간에있는 경우에도 테이블 셀의 왼쪽 위 모서리에 있음을 의미합니다.
뷰 컨트롤러를 쓰고있을 때 self.view
은 제가 앞서 언급 한 루트 뷰입니다. 다른 모든보기는 해당보기의 하위보기 (또는 하위보기의 하위보기 등)입니다. 보기 컨트롤러의 기능 중 하나는 화면에 맞게 자동으로 self.view
의 크기를 조정한다는 것입니다. (전화 통화 도중 사용할 수있는 영역은 작아집니다 : 상태 표시 줄은 두 배나 높기 때문에 앱 공간이 줄어들며,보기 컨트롤러가 탐색 컨트롤러 또는 탭으로 관리되는 경우 더 작아집니다 그러나 그것은 다른 이야기입니다.)하지만 루트보기의 크기를 조정한다고해서 루트보기의 하위보기의 크기가 자동으로 조정되는 것은 아닙니다.
someView.autoresizingMask = UIViewAutoresizingFlexibleWidth
| UIViewAutoresizingFlexibleHeight;
(인터페이스 빌더에서 자동 크기 마스크를 설정하기위한 그래픽 방법이있다 : 당신이 그들의 자동 크기 마스크 (의 수퍼 변경 크기가 때 반응하는 방법을보기를 알려주는 속성)를 설정해야합니다 것을해야 할 일 - 검사기 창에서 눈금자 아이콘을 클릭하고 "자동 크기 조정"섹션을보십시오.
이 시작하기에 적합하지 않은 경우에도 그렇습니다. 이 모든 루트보기 당신을 위해 않는다는 것을 만지작해야 할 경우
someView.frame = CGRectMake(
0, // all the way to the left
0, // all the way at the top
self.view.frame.size.width, // same width as the root view
self.view.frame.size.height, // same height too
);
은 왜 당신이 이제까지 파단을 사용 : 당신이
self.view
의 하위 뷰로 추가하기 전에 그렇게하려면 해당 프레임을 조정? 단순함 : 단 하나의 루트보기 만 가질 수 있지만 하나의보기는 필요한 것을하기에 충분하지 않습니다. 실제로 하나의 뷰 만 필요하다면 루트 뷰로 설정하고 즐거운 방법으로 진행할 수 있지만 가능성은 그보다 더 복잡합니다.
[1] 여기서 약간 단순화하고 있지만, 지금은 괜찮습니다.
설명해 주셔서 감사합니다! –