Frame, Bounds는 CGRect 타입인 View의 Instance Property이다.
둘의 차이점에 대해 알아보자.

 

 

 

CGRect

- 사각형의 위치와 크기를 포함하는 구조체

- CGPoint - x, y 좌표, CGSize - width, height

 

 

 

Frame

The frame rectangle, which describes the view's location and size in its superview's coordinate system.

  • 상위뷰의 좌표 시스템
  • frame을 변경하면?
    자식 뷰의 위치도 변경된다 -> 자식 뷰의 frame은 변경되지 않았으므로
  • 언제 사용?
    UIView 위치나 크기를 설정하는 경우

Bounds

The bounds rectange, which describes the view's location and size in its own coordinate system.

  • 자신만의 좌표 시스템
  • 기본 좌표: (0, 0)
  • bounds의 origin을 변경한다는 것은?  곧, subView들이 화면상에서 drawing 되는 위치가 변경됨을 의미

    => subView들의 frame 값을 변화시키는 것이 아니다. 부모뷰 좌표축이 변하면서 subView가 그려져야 하는 위치가 달라졌기 때문
    ScrollView/TableView 등을 스크롤할 때, scrollView.bounds가 변하고, 그리하여 subView들이 그려지는 위치가 대표적인 예
    (subView들의 frame이 달라지는 게 아님)

    ex ) targetView.bounds.origin.x = 60; 
           targetView.bounds.origin.y = 50; 
           이라고 하면 targetView가 x축-> 60, y축-> 50으로 이동된 자식 뷰가 그려짐.!!!!!!!!!! 
  • 언제 사용?
    - View 내부에 그림을 그릴 때 (drawRect)
    - transformation 후, View의 크기를 알고 싶을 때
    - 하위 View를 정렬하는 것과 같이 내부적으로 변경하는 경우

 

 

 

Ref.

Frame과 bound의 차이(2/2) : https://zeddios.tistory.com/231

Frame과 bound의 차이(1/2) : https://zeddios.tistory.com/203

CGRect와 CGSize의 차이, 그리고 CGPoint: https://zeddios.tistory.com/201

'iOS > iOS 기본기' 카테고리의 다른 글

[iOS] Delegate, Notification, KVO 비교 및 장단점 정리  (0) 2019.12.10
[iOS] Layout - Safe Area  (0) 2019.12.09
[iOS] int vs NSInteger vs NSNumber  (0) 2019.12.05
[iOS] NSOperation vs. GCD  (0) 2019.11.29
[iOS] UIKit framework 계층도  (1) 2019.11.25

+ Recent posts