iOS

2. View에 관하여 (Frame, Bounds)

728x90

View에 관하여.

iOS는 사용자에게 Window와 View를 통해 버튼, 사진과 같은 무언가를 보여준다.

View는 무엇이고, 어떻게 표현할까?

View를 구성 할 때 View를 여러개 사용하여 뷰 계층 구조(View Hierarchy)를 만든다.

부모뷰(Parent View)- 자식뷰(Child View) 혹은 슈퍼 뷰(Super View)- 자식뷰(Sub View)라고 불리는 관계를 만든다.

 

하나의 View는 부모 뷰가 되고 여러개의 자식 뷰를 가질 수 있다.

subViews를 통해 내가 가진 subView들을 코드를 통해 호출 할 수 도 있다.

let myViews = view.subviews

 

뷰는 어떻게 그려질까

뷰가 보여질 위치(x,y)와 뷰의 크기를 결정해주면 화면에 보여지게된다.

view의 크기를 지정하는데 frame, bounds가 존재하는데 frame부터 살펴보자.

Frame

애플문서에보면 Frame은 상위 뷰 좌표계에서 뷰의 위치와 크기를 설명하는 사각형이다.

내가 속한 부모 뷰의 x,y 위치에서 얼마큼 떨어져있나를 나타낸다.

Bounds

자체 좌표계에서 보기의 위치와 크기를 설명하는 사격형이다.

내 왼쪽 모서리를 좌표(0,0)으로 인식한다.

50,50 으로 이동 시키면 내가 이동하는게 아니라, 내 안의 자식 뷰들이 (50,50)만큼 이동한다.

스크롤 뷰에서 스크롤 하는 행위가 bounds을 이동시키는 거라고 한다.

상위뷰 - 하위뷰

정리해보면 이렇다.

View

  • 하나의 계층적인 공간
  • 하나의 부모 뷰에 여러개의 자식 뷰가 존재함
  • subViews로 확인가능함

bounds: 나를 타타내는것

frame: 슈퍼 뷰 내에서 어디있는지 나타내는것


좌표계를 위한 구조체

크기 타입을 사용할 때, CG(Core Graphics)가 붙은 타입들이 있다.

Float,Int,Double이 존재하는데 CGFloat은 무엇일까?

CGFloat이 처음엔 Object-C에서 사용할 수 있게 쓰는 타입인줄 알았는데 cpu가 32비트인지, 64비트에 따라 Float, Double 으로 변경되어서 빌드되는 타입이였다.

  • CGPoint
  • CGReact
  • CGSize

등이 존재한다. 2차원 좌표계를 위한 구조체들이다.

반응형