CGRect๋ "์ฌ๊ฐํ"์ผ๋ก ๊ทธ๋ ค์ง๋ฉฐ, origin๊ณผ size๋ฅผ ๊ฐ์ง๋ค. ์ฆ, [x์ขํ, y์ขํ, width(๋๋น), height(๋์ด)]๋ฅผ ๊ฐ์ง๋ค.
//MARK: -frame
//SupeView(์์๋ทฐ)์ ์ขํ์์คํ
์์์ View์ ์์น์ ํฌ๊ธฐ๋ฅผ ๋ํ๋
open var frame: CGRect
//MARK: -bounds
//View์ ์์น์ ํฌ๊ธฐ๋ฅผ ์์ ๋ง์ ์ขํ์์คํ
์์์ ๋ํ๋
open var bounds: CGRect
SupeView(์์๋ทฐ)์ ์ขํ์์คํ ์์์ View์ ์์น์ ํฌ๊ธฐ๋ฅผ ๋ํ๋
log๋ฅผ ๋ณด๋ฉด ํ๋์ sub view์ frame์ (x:30, y:191) ์ด๊ณ , ๋ณด๋ผ์ sub sub view์ frame์ (x: 70, y: 101)์์ ์ ์ ์๋ค.
์ด ์์น๋ ์์ ๋งํ frame์ ์ ์์ด๊ธฐ๋ ํ SuperView๋ฅผ ๊ธฐ์ค์ผ๋ก ์์ ์ ์์น์ ํฌ๊ธฐ๋ฅผ ๋ํ๋
๋๋ฌธ์ด๋ค. ๋ฐ๋ผ์ ๋ค์๊ณผ ๊ฐ์ด ์๊ฐํด์ผ ํ๋ค.
- ํ๋์์ SuperView๋ ๋
ธ๋์
- ๋ ธ๋์์ origin์ ๊ธฐ์ค์ผ๋ก ์ผ๋ง๋งํผ ๋จ์ด์ง ๊ณณ์ ์์นํด ์๋์ง ํ์
- ๋ณด๋ผ์์ SuperView๋ ํ๋์
- ํ๋์์ origin์ ๊ธฐ์ค์ผ๋ก ์ผ๋ง๋งํผ ๋จ์ด์ง ๊ณณ์ ์์นํด ์๋์ง ํ์
View์ ์์น์ ํฌ๊ธฐ๋ฅผ ์์ ๋ง์ ์ขํ์์คํ ์์์ ๋ํ๋
์์๋ทฐ์ ์๋ฌด๋ฐ ์๊ด์ด ์์ผ๋ฉฐ, ์ค์ง ์์ ์ด ๊ธฐ์ค.
Bounds๋ ์์ ๋ง์ ์ขํ๊ณ (0,0)๋ฅผ ๊ธฐ์ค์ผ๋ก ์์น (x, y) ๋ฐ ํฌ๊ธฐ (๋๋น, ๋์ด)๋ก ํํ๋๋ ์ฌ๊ฐํ์ด๋ค.
๊ทธ๋์ Bounds์ origin์ default๋ก (0,0).
๋ฌด์จ ์๋ฆฌ์ธ์ง ์๊ธฐ ์ํด!
์ผ์ชฝ์ ํ๋ฉด์์ ํ๋์์ bounds๋ฅผ
subView.bounds.origin.x = 50
subView.bounds.origin.y = 60
์ด๋ ๊ฒ ์ฃผ์๋๋ ์ฐ์ธก๊ณผ ๊ฐ์ ๊ฒฐ๊ณผ๊ฐ ๋์จ๋ค. ๋ถ๋ช ํ๋์์ ์์น๋ฅผ ์กฐ์ ํด์ฃผ์๋๋ฐ, ๊ทธ๊ฒ๋ ์ฐ์ธก ์๋๋ก ์ด๋์์ผฐ๋๋ฐ ์ ๋ณด๋ผ์์ด, ๊ทธ๊ฒ๋ ์ผ์ชฝ ์๋ก ์์ง์์๊น?
Bounds๋ ์์๋ทฐ ์์์์ ์ขํ๊ฐ ์๋ "์์ ๋ง์ ์ขํ์์คํ " ์ ๊ฐ์ง๋ค๊ณ ํ์๋ค. ๋ฐ๋ผ์ Bounds๋ฅผ ๋ณ๊ฒฝํ๋ ๊ฒ์ ํด๋น ์์น์์ View๋ฅผ ๋ค์๊ทธ๋ฆฌ๋ผ๋ ์๋ฏธ๊ฐ ๋๋ค.
Bounds๋ ์์๋ทฐ์ ์๋ฌด๋ฐ ๊ด๋ จ์ด ์์ผ๋ฏ๋ก, subView๋ ์์ง์ด์ง ์๋ ๊ฒ ์ฒ๋ผ ๋ณด์ด๊ณ ๊ทธ ์์์๋ sub-sub-View๊ฐ ์์ง์ด๋ ๊ฒ ์ฒ๋ผ ๋ณด์ด๋ ๊ฒ์ด๋ค!
Bounds๋ ์ข ๋ ์์ธํ ์ค๋ช ์ด ์์ด์ผ ์ดํด๊ฐ ๋น ๋ฅด๊ธฐ ๋๋ฌธ์ ์ด ๊ธ์ ์ฐธ์กฐํ๋ฉด ๋ ์ข์ ๊ฒ ๊ฐ๋ค.
๋ณธ ๊ธ์ ์ถ์ฒ: ZeddiOS-Frame๊ณผ Bounds์ ์ฐจ์ด