티스토리 뷰
Instance Property
frame
슈퍼뷰의 좌표시스템에서 뷰의 위치와 사이즈를 나타내는 직사각형의 프레임
var frame: CGRect { get set }
Instance Property
bounds
스스로의 좌표 시스템에서 뷰의 위치와 사이즈를 나타내는 직사각형의 경계
var bounds: CGRect { get set }
뷰를 하나 그려보겠습니다.
CGRect(x: , y: , width: , height: )순서입니다.
frame은 화면의 왼쪽상단 귀퉁이부터 떨어진 만큼 x, y값이 나옵니다.
bounds는 자기 자신의 좌표시스템이니까 0.0이 됩니다.
width height는 똑같이 나옵니다.
뷰를 돌려봤습니다.
돌리기 전에 200*200 크기로 변경했습니다.ㅎㅎ
돌리기 전입니다.
yellowView frame: (107.0, 348.0, 200.0, 200.0)
yellowView bounds: (0.0, 0.0, 200.0, 200.0)
뷰 돌리는 코드
: yellowView.transform = CGAffineTransform(rotationAngle: .pi * 53.13010235 / 180)
frame 크기가 280, 280이 나옵니다.
노란색 뷰를 가득 채우는 사각형의 크기가 나온겁니다.(제가 일부로 cosA = 3/5로 만들었습니다.)
아까 설명에서 슈퍼뷰의 좌표시스템에서 뷰의 위치와 사이즈를 나타내는 직사각형의 프레임라고 했죠!
bounds는 스스로의 좌표 시스템에서 뷰의 위치와 사이즈를 나타내는 직사각형의 경계 입니다.
경계는 바뀐게 없으니 그대로 200, 200이 나온겁니다.
다음과 같이 frame x,y 를 0, 0으로 하면
이렇게 왼쪽 위에 붙습니다.
superView의 frame 의 x, y를 100, 100을 바꿔봤습니다.
하얀 뷰가 오른쪽 아래로 100씩 옮겨졌습니다.
그 안에 노란색 뷰 역시 옮겨졌네요
superView의 bounds 의 x, y 를 바꿔보겠습니다.
왜 노란뷰가 왼쪽 위로 갔을까요?
superView 자기만의 좌표시스템이 바뀐건데 원래 0이 이제는 100이 된겁니다.
(0, 0)이 (100, 100)이 된겁니다.
노란뷰의 프레임의 x 가 107인데 superView의 제일 왼쪽 위가 100이니까 옆으로 7만큼만 떨어져야겠죠.
그니까 저렇게 왼쪽에 붙게 된겁니다.
'iOS' 카테고리의 다른 글
[iOS] API 호출하기 (Advanced) (0) | 2021.02.01 |
---|---|
[iOS] UIView layer로 뷰 그리기, 그림자 (0) | 2021.01.29 |
[iOS] Operation 알아보기 (0) | 2021.01.20 |
[iOS] DispatchWorkItem, DispatchGroup 알아보기 (0) | 2021.01.18 |
[iOS] DispatchQueue 알아보기 - SerialQueue, ConcurrentQueue, QoS, concurrentPerform (0) | 2021.01.18 |