Swift - Frame, Bounds

이원석·2024년 12월 13일

Swift

목록 보기
33/38

Frame, Bounds

frame과 bounds는 View의 위치와 크기를 나타냄

Frame

frame은 Super View 좌표계에서 View의 위치와 크기를 나타냄

  • Super View : 내 View의 한칸 윗 계층 View

frame의 origin(x,y)

Super View의 원점을 (0,0)으로 놓고 원점으로 부터 얼마나 떨어져 있는지를 나타냄
= Super VIew의 좌표계에서 나타냄

frame의 size(width,height)

View가 차지하는 영역을 감싸서 만든 사각형이 frame size
View가 회전하면 값이 변경됨

Bounds

bounds는 자신의 좌표계에서 View의 위치와 크기를 나타냄

bounds의 origin(x, y)

자신의 원점을 (0,0)으로 놓음
View를 처음 생성하면 bounds의 오리진은 (0,0)으로 초기화 됨

bounds의 size(width, height)

View 자체의 영역을 나타낸 것
VIew가 회전을 하더라도 bounds의 사이즈는 바뀌지 않음(bounds의 origin또한 변하지않음)

Frame, Bounds 사용법

frame의 origin 값을 변경하는 경우

frame.orgin의 값을 (50,50)으로 변경 시킬경우
Super View에서 (50,50)떨어진 위치로 이동함.
해당 뷰의 Sub View들도 같이 이동

bounds의 origin 값을 변경하는 경우

bounds.origin 값을 (50,50)으로 견경 시킬 경우
Super View에서의 해당뷰의 위치는 변경X
해당 뷰의 viewport(보임창)을 (50,50)으로 이동
-> 해당뷰의 sub View들이 해당뷰 내에서 (-50,-50)으로 이동한 것처럼 보임

Frame은 언제 사용할까

frame은 UIView의 위치, 크기를 나타낼 때 사용
위치(origin)은 Super View 좌표계에서 나타내며, 크기(size)는 View 영역을 모두 감싸는 사각형의 크기

let myView: UIView = .init(frame: .init(x: 100, y: 100, width: 100, height: 100))
  • UIView를 만들기 위해서 반드시 필요한게 frame

Bounds는 언제 사용할까

bounds 또한 UIView의 위치, 크기를 나타날 때 사용
위치(origin)은 자신의 좌표계에서 나타내며, 크기(size)는 View 영역 자체의 size이다

  • View를 회전(transfomation)한 후 View의 실제 크기를 알고 싶을 때 사용
  • View 내부에 그림을 그릴 때(drawRect) 사용
  • ScrollView에서 스크롤을 할 때 사용(스크롤 동작은 ScrollView의 boudns를 바꿔주는 것 -> ScrollView의 SubView중 어디를 보여줄지 정하는 것)

참조
개발자 소들이

0개의 댓글