wift - frame과 bounds의 차이

5961 단어 iOSSwiftUIView

소개



첫 투고이지만 부드럽게 부탁드립니다 ~
그런데, frame과 bounds의 차이에 대해 상당히 최근 겨우 알았던, 기록해 둘까라고 생각합니다.

frame이란?



frame은 superview가 기준으로 상대적인 좌표와 크기를 반환하는 속성입니다.

bounds란?



bounds는 요소 자신이 기준으로 상대적인 좌표와 크기를 반환하는 속성

코드로 이해



sample.swift
let yellowView: UIView = UIView()

yellowView.backgroundColor = UIColor.yellow

yellowView.frame = CGRect(x: 50, y: 50, width: 100, height: 100)

self.view.addSubview(yellowView)

// Yellow ViewのFrameとBoundsをプリントアウト
print("Yellow View Frame: \(yellowView.frame)") // Frameをプリントアウト
print("Yellow View Bounds: \(yellowView.bounds)") // Boundsをプリントアウト

결과는 다음과 같습니다.

bounds는 자신이 기준이므로 특별히 설정하지 않은 경우 x, y 모두 0입니다.

이미지로 이해





bounds를 설정하면 어떻게 됩니까?



yellowView에 redView를 추가하고 yellowView의 바운드 x, y를 (-20,-20)으로 설정합시다.

sample2.swift
let redView: UIView = UIView()

redView.backgroundColor = UIColor.red

redView.frame = CGRect(x: 0, y: 0, width: 50, height: 50)

yellowView.addSubview(redView)

print("Red View Frame: \(redView.frame)")
print("Red View Bounds: \(redView.bounds)")

결과는 다음과 같습니다.



또, yellowView의 바운드의 x, y를 (-20,-20)로 해 봅시다.

sample3.swift
yellowView.bounds = CGRect(x: -20, y: -20, width: 100, height: 100)

실행해보면

원인은, yellowView의 원점 좌표는 (-20,-20)가 되어, redView의 원점 좌표는 (0,0)인 채이므로, redView는 우하로 이동해 버렸습니다.

좋은 웹페이지 즐겨찾기