iOS

[ iOS ] Bounds์™€ Frame ๋น„๊ต - 2. Size

Forest Yun 2023. 7. 1. 19:21
728x90

 

 

๐Ÿค” ๋ฌธ์ œ ๐Ÿค”

Bounds์™€ Frame์˜ ์ฐจ์ด๋Š” ๋ญ˜๊นŒ? UIView์—๋Š” bounds ํ”„๋กœํผํ‹ฐ์™€ frame ํ”„๋กœํผํ‹ฐ๊ฐ€ ์žˆ๋‹ค. ๊ณต์‹ ๋ฌธ์„œ๋ฅผ ๋ด๋„ ๋‘˜์˜ ์ฐจ์ด๋Š” ํฌ๊ฒŒ ์™€๋‹ฟ์ง€ ์•Š๋Š”๋‹ค. ๋”ฐ๋ผ์„œ StoryBoad๋ฅผ ์‚ฌ์šฉํ•ด ์‹ค์Šตํ•˜๋ฉฐ View์˜ Bounds์™€ Frame์„ ๋น„๊ต ๋ถ„์„ ํ•ด๋ณด์ž!

 

 

1ํŽธ ๋ณด๊ธฐ

 

[ iOS ] Bounds์™€ Frame ๋น„๊ต - 1. ๊ณต์‹๋ฌธ์„œ์™€ origin

๐Ÿค” ๋ฌธ์ œ ๐Ÿค” Bounds์™€ Frame์˜ ์ฐจ์ด๋Š” ๋ญ˜๊นŒ? UIView์—๋Š” bounds ํ”„๋กœํผํ‹ฐ์™€ frame ํ”„๋กœํผํ‹ฐ๊ฐ€ ์žˆ๋‹ค. ๊ณต์‹ ๋ฌธ์„œ๋ฅผ ๋ด๋„ ๋‘˜์˜ ์ฐจ์ด๋Š” ํฌ๊ฒŒ ์™€๋‹ฟ์ง€ ์•Š๋Š”๋‹ค. ๋”ฐ๋ผ์„œ StoryBoad๋ฅผ ์‚ฌ์šฉํ•ด ์‹ค์Šตํ•˜๋ฉฐ View์˜ Bounds์™€ Fra

88yhtserof.tistory.com

 

 

 


 

 

 

 

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์ด ์•„๋‹ˆ๋ฉด ์ ์šฉ์ด ์•ˆ ๋œ๋‹ค๋Š” ๋‚ด์šฉ์ด ์žˆ๋Š”๋ฐ, ์ด์™€ ๊ด€๋ จํ•ด์„œ ์• ๋‹ˆ๋ฉ”์ด์…˜์„ ๊ณต๋ถ€ํ•ด๋ณด๋ฉด ์ข‹์„ ๊ฒƒ ๊ฐ™๋‹ค.

 

 

 

 

 


 

728x90