[iOS] iOS의 View체계

corncheese·2021년 8월 10일
0

iOS

목록 보기
8/10

우리가 iOS 애플리케이션 화면에서 보는 컨텐츠는 윈도우와 뷰를 사용해 나타낸다.

  • view 계층 구조와 계층에 포함된 뷰에 대해 이해한다.
  • view 계층을 생성하고 관리하는 방법을 이해한다.
  • view 좌표계를 이해한다.

View의 기본적인 역할

뷰는 자신의 콘텐츠를 보여주는 것과 더불어 다른 뷰를 위한 컨테이너 역할을 한다
윈도우는 그 자체로 콘텐츠를 표현할 수 없지만 애플리케이션의 뷰를 위한 컨테이너 역할을 한다.
뷰는 UIView 클래스 또는 UIView 클래스의 하위클래스(Subclass)의 인스턴스로 윈도우의 한 영역에서 콘텐츠를 보여준다. View가 나타낸느 콘텐츠는 이미지, 문자, 도형과 같이 다양하다.

View는 제스처 인식기, 터치 이벤트를 처리할 수 있다. 또한 뷰 계층구조에서 부모뷰는 자식뷰의 위치와 크기를 관리한다.

뷰 계층(View hierarchy)

뷰 계층구조와 서브뷰 관리

  • 뷰는 자신의 콘텐츠를 보여주는 것과 더불어, 다른 뷰를 위한 컨테이너로써의 역할도 한다.

하나의 뷰가 다른 뷰를 포함할 때, 두 뷰 사이에 부모-자식 관계가 생성된다. 부모-자식 관계에서 부모뷰는 슈퍼뷰(superview), 자식뷰는 서브뷰(subview)로 부모-자식 관계 형성은 애플리케으션의 시작적 모습과 동작에 모두 영향을 미친다.

뷰 계층의 생성과 관리

-- View계층을 생성하는 방식에는 인터페이스 빌더를 이용하는 방법과 코드를 작성하는 방법이 있다.

코드방식을 사용할 경우 서브뷰를 부모뷰에 추가하기 위해, 부모뷰의 addSubView(:)메소드를 호출한다.
이 메서드는 해당 서브뷰를 서브뷰 목록의 마지막에 추가한다.
부모뷰의 서브뷰를 제거하기 위해서는 서브뷰의 removeFromSuperVuew()메서드를 호출한다.
이 외에도 서브뷰를 부모뷰 목록의 중간에 삽입하기 위해 insertSubView(
:at:), 부모뷰 내에 이미 존재하는 서브뷰를 정렬하기 위해 bringSubView(toFront:), sendSubView(toBack:) 등의 메서드를 호출할 수 있다.

뷰의 생성에서

UIViewController를 생성할 때,
UIViewController는 스스로 화면에 표시되는 인스턴스가 아니므로, 자신이 운용할 view를 반드시 가지고 있어야 한다.
이것 때문에 인터페이스 빌더에서 ViewController 인스턴스를 추가하면 View가 자동으로 추가된다.

뷰의 좌표계

UIKit에서 기본이 되는 좌표계는 좌측 상단 모서리를 원점으로 하여, 원점으로부터 아래쪽, 오른쪽 방향으로 확장된다. 좌표값은 해상도와 상관없이 콘텐츠의 위치를 잡는 부동소수점을 사용하여 나타낸다.

프레임과 바운드

iOS의 좌표체계의 시작은 왼쪽 위부터 시작이다. 즉 뷰의 제일 왼쪽의 제일 위의 지점이 (0,0)이다. 또 수평축은 x로, 수직축은 y로 표현한다.
뷰의 프레임은 뷰의 크기와 위치를 슈퍼뷰의 좌표계를 기준으로 나타낸다.
바운드는 뷰의 크기와 위치를 해당 뷰 자신의 좌표계를 기준으로 나타낸다.

https://www.boostcourse.org/mo326/lecture/16874?isDesc=false

0개의 댓글