Lined Notebook

Bounds와 Frame의 차이점

by 사슴비행기

iOS 프로그래밍에서 boundsframe은 뷰의 위치와 크기를 나타내는 두 가지 속성입니다.

##1. Frame
* 부모뷰나 슈퍼뷰 좌표 시스템에서 뷰의 위치와 크기를 정의합니다.
* 예를 들어, `view.frame.origin.x`는 뷰의 왼쪽 상단 모서리의 x좌표를 나타내고, `view.frame.size.width`는 뷰의 너비를 나타냅니다.


##2. Bounds
뷰의 자체 좌표 시스템에서 위치와 크기를 정의합니다. 즉, 뷰가 자신을 기준으로 어디에 위치하고 얼마나 큰지를 나타냅니다.
* 일반적으로 `bounds.origin`은 (0,0)이며 `bounds.size`는 뷰의 실제 크기를 나타냅니다.

 

 

슈퍼뷰 안에 서브뷰가 2개 있다고 해보자.

그 때 frame과 bounds는 아래와 같다.

`subView1.frame = (50, 30, 100, 80)`

`subView2.frame = (250, 30, 100, 100)`

 

`subView1.bounds = (0, 0, 100, 80)`

`subView2.bounds = (0, 0, 100, 100)`


이 때 슈퍼뷰의 bounds를 변경한다.
`superView.bounds.origin.x = 100`

subView들의 frame과 bounds의 값은 동일하나,
subView가 이동한 것처럼 보일 수도 있지만, 실제로는 슈퍼뷰가 움직였다.
왜냐하면 여전히 상위뷰는 frame의 값은 변하지 않았고 bounds값만 달라졌기 때문이다.
bounds값이 변하면서 보여주는 위치가 변했다고 보면 이해하기 쉽다.

아래는 bounds만 변화시킨 결과이다.

 

이 때 위에서 말했듯이 슈퍼뷰의 frame값은 여전히 같다.

그래서 subView들은 슈퍼뷰의 bounds값이 변해도 위치가 변경되지 않는다.

위 사진에 적어둔 (10, 20, 200, 200)은 슈퍼뷰의 frame의 초기값으로 정해둔 값입니다.

 

잘 못 이해한 부분이 있다면 댓글로 알려주세요

 

참고한 글: https://zeddios.tistory.com/203

 

iOS ) Frame과 Bounds의 차이 (1/2)

안녕하세요 :) Zedd입니다. 지금 다른 글을 쓰고있는데, 쓰면 쓸수록 쓸 주제가 많아집니다...급 이 글을 쓰게 됐어요 XD..아무튼 오늘은 저도 궁금했던 Frame과 Bounds의 차이를 알아볼거에요 :)다음글

zeddios.tistory.com

 

블로그의 정보

Beautiful Coding

사슴비행기

활동하기