๐ค ๋ฌธ์ ๐ค
Bounds์ Frame์ ์ฐจ์ด๋ ๋ญ๊น? UIView์๋ bounds ํ๋กํผํฐ์ frame ํ๋กํผํฐ๊ฐ ์๋ค. ๊ณต์ ๋ฌธ์๋ฅผ ๋ด๋ ๋์ ์ฐจ์ด๋ ํฌ๊ฒ ์๋ฟ์ง ์๋๋ค. ๋ฐ๋ผ์ StoryBoad๋ฅผ ์ฌ์ฉํด ์ค์ตํ๋ฉฐ View์ Bounds์ Frame์ ๋น๊ต ๋ถ์ ํด๋ณด์!
1ํธ ๋ณด๊ธฐ
2. Size
1ํธ์ ์ด์ด 2ํธ์์๋ bounds์ frame์ size๋ฅผ ๋น๊ตํด๋ณด์.
๐๊ณต์๋ฌธ์ ๋ค์๋ณด๊ธฐ
Bounds์ ๊ณต์๋ฌธ์
/UIKit /Views and controls /UIView /bounds
Instance Property
bounds
์์ฒด ์ขํ ์์คํ ์ผ๋ก ํด๋น view์ ์์น์ ํฌ๊ธฐ๋ฅผ ํํํ๋ ๊ฒฝ๊ณ ์ฌ๊ฐํ
๊ธฐ๋ณธ์ ์ธ bound ์์ ์ (0, 0)์ด๊ณ , size๋ frame ํ๋กํผํฐ์ ์๋ ์ฌ๊ฐํ์ size์ ๋์ผํ๋ค. ์ด ์ฌ๊ฐํ์ size ๋ณํ๋ center point๋ฅผ ๊ธฐ์ค์ผ๋ก view๋ฅผ ์ปค์ง๊ฒ ํ๊ฑฐ๋ ์ค์ด๋ค๊ฒ ํ๋ค. size ๋ณํ๋ ๋ frame ํ๋กํผํฐ์ ์ฌ๊ฐํ size๊ฐ ์ผ์น๋๋๋ก ๋ณ๊ฒฝํ๋ค. ๊ฒฝ๊ณ ์ฌ๊ฐํ์ ์ขํ๋ ํญ์ point๋ก ์ง์ ๋๋ค.
๊ฒฝ๊ณ ์ฌ๊ฐํ์ ๋ณํ๋ draw(_:) ๋ฉ์๋ ํธ์ถ ์์ด ์๋์ผ๋ก view๋ฅผ ๋ค์ ํ์ํ๋ค. ๋ง์ฝ ๋น์ ์ด UIKit๊ฐ draw(_:) ๋ฉ์๋๋ฅผ ํธ์ถํ๊ธธ ๋ฐ๋๋ค๋ฉด, contentMode ํ๋กํผํฐ๋ฅผ UIView.ContentMode.redraw ๋ก ์ค์ ํด๋ผ. ์ด ํ๋กํผํฐ์ ๋ณ๊ฒฝ์ฌํญ์ ์ ๋๋ฉ์ด์ ์ ์ ์ฉํ ์ ์๋ค.
Frame์ ๊ณต์๋ฌธ์
/UIKit /Views and controls /UIView /frame
Instance Property
frame
๋ถ๋ชจ ๋ทฐ์ ์ขํ ์์คํ ์ ๊ธฐ๋ฐํ view์ ์์น์ ํฌ๊ธฐ์ ํํํ๋ ํ ์ฌ๊ฐํ
์ด ์ฌ๊ฐํ์ ๋ถ๋ชจ ๋ทฐ์ ์ขํ ์์คํ ์ ๊ธฐ์ค์ผ๋ก ๋ทฐ์ ํฌ๊ธฐ์ ์์น๋ฅผ ์ ์ํ๋ค. ๋ ์ด์์ ์์ ๋์ ์ด ์ฌ๊ฐํ์ผ๋ก ํฌ๊ธฐ๋ฅผ ์ค์ ํ๊ณ ๋ทฐ๋ฅผ ๋ฐฐ์นํ ์ ์๋ค. frame ํ๋กํผํฐ ์ค์ ์ center ํ๋กํผํฐ์ ์ํด ์ง์ ๋ point๋ฅผ ๋ณ๊ฒฝํ๊ณ , bounds ์ฌ๊ฐํ์ size๋ฅผ ๋ณ๊ฒฝ์ํจ๋ค. frame ์ฌ๊ฐํ์ ์ขํ๋ ํญ์ point ๋จ์๋ก ์ค์ ๋๋ค.
(Warning) ๋ง์ฝ transform ํ๋กํผํฐ๊ฐ ์๋ณ transform์ด ์๋๋ผ๋ฉด, ์ด ํ๋กํผํฐ์ ๊ฐ์ ์ ์๋์ง ์์ผ๋ฏ๋ก ๋ฌด์ํด์ผํ๋ค.
frame ์ฌ๊ฐํ์ ๋ณํ๋ draw(_:) ๋ฉ์๋ ํธ์ถ์์ด ์๋์ผ๋ก ๋ทฐ๋ฅผ ๋ค์ ํ์ํ๋ค. ๋ง์ฝ frame ์ฌ๊ฐํ์ด ๋ณ๊ฒฝ๋ ๋ UIKit๊ฐ draw(_:) ๋ฉ์๋๋ฅผ ํธ์ถํ๊ธธ ๋ฐ๋๋ค๋ฉด, contentMode ํ๋กํผํฐ๋ฅผ UIView.ContentMode.redraw ๋ก ์ค์ ํ๋ผ.
์ด ํ๋กํผํฐ ๋ณ๊ฒฝ์ ์ ๋๋ฉ์ด์ ์ ์ ์ฉํ ์ ์๋ค. ํ์ง๋ง ๋ง์ฝ transform ํ๋กํผํฐ๊ฐ ๋น์๋ณ transform์ ํฌํจํ๋ค๋ฉด, frame ํ๋กํผํฐ์ ๊ฐ์ ์ ์๋์ด์ง ์ ์์ผ๋ฉฐ ์์ ํด์๋ ์ ๋๋ค. ์ด๋ฐ ๊ฒฝ์ฐ์, center ํ๋กํผํฐ๋ฅผ ์ฌ์ฉํ์ฌ ๋ทฐ๋ฅผ ์ฌ๋ฐฐ์นํ๊ณ ๋์ bounds ํ๋กํผํฐ๋ฅผ ์ฌ์ฉํ์ฌ size๋ฅผ ์กฐ์ ํ๋ผ.
๐ฆพ์ค์ตํ๊ธฐ
size ๋ณ๊ฒฝ
Storyboard๋ฅผ ํตํด ์ง์ฌ๊ฐํ์ ๋ฐฐ์นํด ์ถ๋ ฅํด๋ณด๋ฉด bounds์ frame์ size๋ ๋์ผํ๋ค. ๊ทธ๋ผ frame์ size๋ฅผ ๋ณ๊ฒฝํ๋ฉด ์ด๋จ๊น? ๋ณ๊ฒฝ๋ size์ ๋ง๊ฒ bounds์ size๋ ๋ณ๊ฒฝ๋๋ค. bounds์ size๋ฅผ ๋ณ๊ฒฝํด๋ณด์๋ ๋์ผํ๋ค. ์ด๋ ๊ณต์๋ฌธ์์ ์ ๋์์๋ค. ๊ณต์๋ฌธ์์๋ size ๋ณ๊ฒฝ์ด ์๋ก์ size์ ๋ฐ์๋๋ค๊ณ ํ๋ค.
๊ณต์๋ฌธ์
bounds | - size๋ frame ํ๋กํผํฐ์ ์๋ ์ฌ๊ฐํ์ size์ ๋์ผํ๋ค. - size ๋ณํ๋ ๋ frame ํ๋กํผํฐ์ ์ฌ๊ฐํ size๊ฐ ์ผ์น๋๋๋ก ๋ณ๊ฒฝํ๋ค. |
frame | - bounds ์ฌ๊ฐํ์ size๋ฅผ ๋ณ๊ฒฝ์ํจ๋ค. |
Size ๋ณ๊ฒฝ ์ ์์น
bounds์ frame์ size๋ ๋์ผํ๊ฒ ๋ณ๊ฒฝ๋์ง๋ง, ์์น๋ ๋์ผํ ๊น? ์๋๋ค. ์๋ํ๋ฉด ์๋ก์ ๊ธฐ์ค ์ขํ ์์คํ ์ด ๋ค๋ฅด๊ธฐ ๋๋ฌธ์ด๋ค.
๋ณ๊ฒฝ ์ ์ง์ฌ๊ฐํ์ ์ฐ๋
ธ๋๋ทฐ๋ก ์์น๋ฅผ ํ์ธํ๊ณ ๊ฐ๊ฐ์ ๋ํด size๋ฅผ ๋ณ๊ฒฝํด๋ณด์. ์ ์ฌ์ง์ฒ๋ผ frame๊ณผ bounds๋ size ๋ณ๊ฒฝ์ ๋ฐ๋ผ ๋ชจ์์ ๋์ผํ์ง๋ง ํฌ๊ธฐ๊ฐ ์ค์ด๋ ๊ธฐ์ค์ ์ด ๋ค๋ฅด๋ค.
frame์ ๊ฒฝ์ฐ, ๋ถ๋ชจ ๋ทฐ์ ์ขํ์์คํ
์ ๊ธฐ์ค์ผ๋ก ํ๊ธฐ ๋๋ฌธ์ ์ผ์ชฝ ์๋จ์ ๊ธฐ์ค์ผ๋ก ๋ชจ์์ด ๋ณํํ๋ค. ํ์ง๋ง bounds์ ๊ฒฝ์ฐ๋ ๊ณต์๋ฌธ์์ ๋์์๋ฏ, size์ ๋ณํ๋ center point๋ฅผ ๊ธฐ์ค์ผ๋ก ๋ณํํ๋ค. ๋ฐ๋ผ์ size๋ ๋์ผํ ์ง๋ผ๋ ์์น๋ ๋ค๋ฅด๋ค.
๊ณต์๋ฌธ์
bounds | - ์ด ์ฌ๊ฐํ์ size ๋ณํ๋ center point๋ฅผ ๊ธฐ์ค์ผ๋ก view๋ฅผ ์ปค์ง๊ฒ ํ๊ฑฐ๋ ์ค์ด๋ค๊ฒ ํ๋ค. |
frame | - ์ด ์ฌ๊ฐํ์ ๋ถ๋ชจ ๋ทฐ์ ์ขํ ์์คํ ์ ๊ธฐ์ค์ผ๋ก ๋ทฐ์ ํฌ๊ธฐ์ ์์น๋ฅผ ์ ์ํ๋ค. |
ํ์ ๋ View์ Size
๊ทธ๋ผ frame๊ณผ bounds๋ size์ ์์ด์ ๋ชจ๋ ๋์ผํ๊ฐ? ๊ทธ๊ฑด ์๋๋ค. ๋์ ์ฐจ์ด๋ ๋ฐ๋ก ์ด๋ฆ์์ ์ ์ ์๋ค.
bounds๋ ๊ฒฝ๊ณ๋ผ๋ ์๋ฏธ, frame์ ํ ์ด๋ผ๋ ์๋ฏธ๋ฅผ ๊ฐ๊ณ ์๋ค. ์ฒ์์ ๊ณต์ ๋ฌธ์๋ง ์ฝ์์ ๋์๋ ๊ฒฝ๊ณ์ ํ์ ์๋ฏธ๋ฅผ ์ ํ์
ํ๊ธฐ ํ๋ค์๋ค. ํ์ง๋ง ์ค์ต์ ํด๋ณด๋ฉด ์ bounds๋ ๊ฒฝ๊ณ์ด๊ณ , frame์ ํ์ธ์ง ์๋ฟ๋๋ค.
๋ ธ๋๋ทฐ๋ฅผ ๋๋น๋ฅผ 150, ๋์ด๋ฅผ 10์ผ๋ก ๋ฐ๊พผ ํ ์ฝ 0.25์ ๋ ํ์ ์์ผฐ๋ค. ๊ทธ๋ฆฌ๊ณ bounds์ frame์ size๋ฅผ ์ถ๋ ฅํด๋ณด๋ ๋ถ๋ช ์์์๋ ๋๊ฐ๋ ํฌ๊ธฐ๊ฐ ๋ฌ๋ผ์ก๋ค. ์ด๋ ๋ฐ๋ก frame์ด ํ์ด๊ธฐ ๋๋ฌธ์ด๋ค.
๋นจ๊ฐ๋ทฐ๋ ๋๋น๊ฐ 113, ๋์ด๊ฐ 113์ด๋ค. ๊ทผ๋ฐ ๋ ธ๋๋ทฐ์ frame.size๋ ์ด์ ๊ฐ๋ค. ์ฆ ๊ธฐ์ธ์ด์ง ๋ ธ๋๋ทฐ๋ฅผ ์ฌ๊ฐํ ํ๋ก ๊ฐ์ธ๋ฉด ๊ทธ๊ฒ ๋ฐ๋ก frame์ size์ธ๊ฒ์ด๋ค. ๊ทธ๋ผ bounds๋ ๋ญ์ง? ๋ฐ๋ก ๋ ธ๋๋ทฐ์ ๋ฐ๊นฅ ๊ฒฝ๊ณ์ ์ ๋๋น์ ๋์ด๋ก, ์ฆ ์ค์ ๋ ธ๋๋ทฐ ํฌ๊ธฐ์ด๋ค.
๊ทธ๋์ frame์ด ํ์ด๊ณ bounds๊ฐ ๊ฒฝ๊ณ์ธ ๊ฒ์ด๋ค.
๐ด๋ง๋ฌด๋ฆฌํ๋ฉฐ
๊ฐ๋จ ์ ๋ฆฌ
frame์ bounds๋ ์๋ก size๊ฐ ๋ฐ์๋๋ค. ํ์ง๋ง frame์ ์ฌ๊ฐํ ํ, bounds๋ ์ค์ ๊ฒฝ๊ณ์ ์ด๋ผ๋ ๊ฑธ ์์ง ๋ง์.
transform
์ด๋ฒ์ ๋ทฐ๋ฅผ ํ์ ์ํค๋ฉด์ transform์ ์ฒ์ ์ฌ์ฉํด ๋ณด์๋๋ฐ ์ด๊ฒ๋ view์ ํ๋กํผํฐ ์ค ์ ๋๋ฉ์ด์ ์ด ๊ฐ๋ฅํ ํ๋กํผํฐ๋ผ๊ณ ํ๋ค. frame์ ๊ณต์๋ฌธ์์์ transform์ ํ๋กํผํฐ๊ฐ identifier์ด ์๋๋ฉด ์ ์ฉ์ด ์ ๋๋ค๋ ๋ด์ฉ์ด ์๋๋ฐ, ์ด์ ๊ด๋ จํด์ ์ ๋๋ฉ์ด์ ์ ๊ณต๋ถํด๋ณด๋ฉด ์ข์ ๊ฒ ๊ฐ๋ค.
'iOS' ์นดํ ๊ณ ๋ฆฌ์ ๋ค๋ฅธ ๊ธ
[ iOS ] MVC - 1) MVC๋? (1) | 2023.10.17 |
---|---|
[ iOS ] Link Presentation ์์๋ณด๊ธฐ (0) | 2023.08.18 |
[ iOS ] Bounds์ Frame ๋น๊ต - 1. ๊ณต์๋ฌธ์์ origin (0) | 2023.06.30 |
[ iOS ] ๋๊ธฐ์ ๋น๋๊ธฐ / ์ง๋ ฌ๊ณผ ๋์์ฑ (0) | 2023.06.22 |
[ iOS ] CollectionView์ Section ์จ๊ธฐ๊ธฐ - CompositionalLayout (0) | 2023.03.06 |