티스토리 뷰

TIL

[TIL] 2022 / 08 / 15(frame과 bounds)

희철 2022. 8. 16. 01:46

UIButton.configuration

-> 따로 정리했음.

 

 

Frame vs Bounds

 

 

Frame

 

 

frame은 상위 뷰의 좌표계를 기준으로 뷰의 위치와 크기를 나타내는 것.

 

상위 뷰의 왼쪽 위 지점을 (0, 0)으로 두고 CGSize인 width와 height 값으로 뷰를 그림.

 

그래서 frame의 origin을 바꿔주면 자신과 subView들 전부 이동됨.

 

예를 들어, origin 값이 (0, 0)에서 (50, 50)으로 바뀐다면 상위 뷰를 기준으로 오른쪽으로 50, 아래로 50만큼 이동.

 

 

Bounds

 

 

bounds는 상위 뷰가 아닌 자신의 좌표계에서 위치와 크기를 나타냄.

 

계층 구조에 상관없이 모든 뷰의 왼쪽 위가 (0, 0)이 되는 것.

 

origin값이 바뀌는 것은 해당 뷰가 스크롤뷰라고 생각하면 이해하기 편함.

 

아래와 같이 세 뷰가 있다고 해보겠음.

(뷰와 뷰 사이의 거리는 모두 40으로 설정함.)

 

이때 두번째 뷰인 하늘색 뷰의 bounds.origin.x와 bounds.origin.y를 각각 50으로 설정해보겠음.

 

스크롤뷰로 생각하면 하늘색 뷰를 오른쪽으로 50 아래로 50만큼 스크롤했다고 생각하면됨.

 

근데 이때 주의해야 할 점은, 화면에 보여지는 크기는 변함이 없다는 것.

 

검은 색 선이 보여지는 부분이라고 생각하면됨. 

(사이즈는 당연히 파란색 뷰와 같음)

 

그래서 빌드를 해서 확인해보면 아래와 같이 보일 것임.

파란색 뷰 자체의 위치는 상위뷰를 기준으로 했을때 변함이 없음.

 

파란색 뷰 bounds의 origin이 바뀌면서 보라색 뷰는 단지 이동만 한 것.

 

보라색 뷰는 잘릴 이유가 없음. 

-> 파란색 뷰만큼을 제외하고 자르겠다는 코드를 작성한 적이 없음.

 

 

여기서 나오는 개념이 clipsToBounds임.

 

만약 여기서 clipsToBounds의 값을 true로 준다면 파란색 뷰만큼만 보여주고 나머지는 잘라버릴 것이기 때문에 아래처럼 보임.

 

 

 

진짜 이해하는데 너무 오래걸렸음.

 

그래도 이해해서 좋음.

 

나중에 frame과 bounds에 대해서 까먹지 않게 따로 자세히 정리해야겠음.

'TIL' 카테고리의 다른 글

[TIL] 2022 / 08 / 18  (0) 2022.08.18
[TIL] 2022 / 08 / 17  (0) 2022.08.17
[TIL] 2022 / 08 / 12  (0) 2022.08.12
[TIL] 2022 / 08 / 11  (0) 2022.08.12
[TIL] 2022 / 08 / 10  (0) 2022.08.11
댓글
최근에 올라온 글
Total
Today
Yesterday