프로그래밍/Object-C2011. 9. 4. 19:57
아이폰 화면에 보이는 것들은 트리 형식의 계층구조에 따른 순서를 가지고 있다. 메인 윈도우를 시작으로 뷰가 계층적으로 배치되어 있다. 모든 뷰는 하위뷰라고 불리는 자식들을 가지고 있다. 루트 윈도우를 포함해 각 뷰들은 정렬된 하위뷰 리스트를 가지고 있다. 뷰는 하위뷰를 많이 가질 수도 있고 하나도 없을 수도 있다. 애플리케이션 뷰를 어떻게 배치하고 어떤 뷰가 어떤 뷰를 가지는지 정한다.
  하위뷰는 항상 가장 뒤에서부터 앞으로 순서대로 화면에 나타난다. 아이폰은 뷰의 투명도를 지원하기 때문에 애니메이션 셀(만화를 만들 때 사용하는 투명한 시트)을 쌓아 올린 것과 똑같은 방식으로 작동한다. 시트에서 색칠된 부분만이 보여지고 나머지 시트의 투명한 부분을 통해서는 시트 아래의 시각적인 요소들을 볼 수 있다.

뷰 계층구조에 하위뷰를 추가해 복잡한 GUI를 구성할 수 있다.


  전형적인 윈도우에서 사용하는 배열을 조금 보여준다. 여기에는 UINavigationController 기반 윈도우를 가진 윈도우가 있다. 투명하게 보이는 가장 오른쪽 요소인 그 윈도우는 내비게이션 하위뷰를 가지고 있다. 내비게이션 하위뷰에는 좌측, 우측 두 개의 하위뷰 버튼과 테이블이 있다. 이 요소들이 함께 쌓여 GUI를 구성한다.
  내비게이션바 위로 버튼이 어떻게 보이는지 그리고 테이블을 버튼이나 바를 가리지 않도록 크기를 어떻게 조정하는지 알 수 있다. 테이블 프레임은 크고 화면 영역의 대부분을 차지한다. 그러면 애플리케이션 하위뷰를 다루는 몇 가지 방법을 알아보자.

- [parentView addsubview:chile] 를 호출해 하위뷰를 추가한다. 가장 최근에 추가된 하위뷰가 항상 가장 앞 화면에 나타난다.

- 뷰가 가진 하위뷰는 [parentview subviews] 를 호출해 알 수 있다. 이 호출은 가장 뒤에서 가장 앞으로 순서대로 배열된 하위뷰의 배열을 반환한다.

- 부모 뷰에서 하위뷰를 제거하려면 [childView removeFromSuperview] 를 사용한다.

- [parentView exchangeSubViewAtIndex: i  withSubviewAtIndex: j ] 를 사용해 하위뷰의 순서를 바꿀 수 있다. 하위뷰를 가장 앞이나 가장 뒤로 보내고 싶으면 bringSubviewToFront: 나 sendSubviewToBack: 을 호출한다.

- setTag: 를 사용해 하위뷰에 태그를 달 수 잇다. 이 메소드는 하위뷰에 숫자 태그를 달아 뷰를 식별한다. 부모 뷰에서 viewWithTag: 를 호출하면 하위뷰 계층구조에서 해당 뷰를 끄집어 낼 수 있다.


출처 - 도전! 아이폰4 프로그래밍





'프로그래밍 > Object-C' 카테고리의 다른 글

UIGesture 이미지 이동, 확대/축소, 회전 예제  (0) 2011.09.09
UIGesture  (0) 2011.09.09
NSThread 예제  (0) 2011.09.04
스레드 사용하기  (0) 2011.09.04
객체 제거하기(메모리 해제)  (0) 2011.09.04
Posted by 건깡