๋ณธ๋ฌธ ๋ฐ”๋กœ๊ฐ€๊ธฐ
iOS ๐ŸŽ/iOS

View hierarchy

by yongmin.Lee 2021. 2. 16.

Window & View

- iOS์—์„œ ํ™”๋ฉด์— ์• ํ”Œ๋ฆฌ์ผ€์ด์…˜์˜ ์ฝ˜ํ…์ธ ๋ฅผ ๋‚˜ํƒ€๋‚ด๊ธฐ ์œ„ํ•ด ์œˆ๋„์šฐ์™€ ๋ทฐ๋ฅผ ์‚ฌ์šฉ

- ์œˆ๋„์šฐ๋Š” ๊ทธ ์ž์ฒด๋กœ ์ฝ˜ํ…์ธ ๋ฅผ ํ‘œํ˜„ํ•  ์ˆ˜ ์—†์ง€๋งŒ ์• ํ”Œ๋ฆฌ์ผ€์ด์…˜์˜ ๋ทฐ๋ฅผ ์œ„ํ•œ ์ปจํ…Œ์ด๋„ˆ ์—ญํ• 

- ๋ทฐ๋Š” UIView ํด๋ž˜์Šค ๋˜๋Š” UIView ํด๋ž˜์Šค์˜ ํ•˜์œ„ํด๋ž˜์Šค(Subclass)์˜ ์ธ์Šคํ„ด์Šค๋กœ ์œˆ๋„์šฐ์˜ ํ•œ ์˜์—ญ์—์„œ ์ฝ˜ํ…์ธ ๋ฅผ ๋ณด์—ฌ์คŒ

- ๋ทฐ๋Š” ๋˜ ๋‹ค๋ฅธ ๋ทฐ๋ฅผ ๊ด€๋ฆฌํ•˜๊ณ  ๊ตฌ์„ฑํ•˜๊ธฐ ์œ„ํ•ด ์‚ฌ์šฉ๋˜๊ธฐ๋„ ํ•œ๋‹ค

 

View hierarchy

- ๋ทฐ๋Š” ์ž์‹ ์˜ ์ฝ˜ํ…์ธ ๋ฅผ ๋ณด์—ฌ์ฃผ๋Š” ๊ฒƒ๊ณผ ๋”๋ถˆ์–ด, ๋‹ค๋ฅธ ๋ทฐ๋ฅผ ์œ„ํ•œ ์ปจํ…Œ์ด๋„ˆ๋กœ์จ์˜ ์—ญํ• ๋„ ํ•ฉ๋‹ˆ๋‹ค.

- ํ•˜๋‚˜์˜ ๋ทฐ๊ฐ€ ๋‹ค๋ฅธ ๋ทฐ๋ฅผ ํฌํ•จํ•  ๋•Œ, ๋‘ ๋ทฐ ์‚ฌ์ด์— ๋ถ€๋ชจ-์ž์‹ ๊ด€๊ณ„๊ฐ€ ์ƒ์„ฑ

- ์ž์‹๋ทฐ๋Š” ์„œ๋ธŒ๋ทฐ(subview)๋กœ, ๋ถ€๋ชจ๋ทฐ๋Š” ์Šˆํผ๋ทฐ(superview)๋กœ ๋ถˆ๋ ค์ง‘๋‹ˆ๋‹ค

- ์Šˆํผ๋ทฐ์™€ ์„œ๋ธŒ๋ทฐ์˜ ๊ด€๊ณ„์—์„œ ์„œ๋ธŒ๋ทฐ๊ฐ€ ๋ถˆํˆฌ๋ช…ํ•  ๊ฒฝ์šฐ ์•„๋ž˜ ๊ทธ๋ฆผ๊ณผ ๊ฐ™์ด ์Šˆํผ๋ทฐ๊ฐ€ ์„œ๋ธŒ๋ทฐ์— ๊ฐ€๋ ค์ง‘๋‹ˆ๋‹ค.

- ๋งŒ์•ฝ ํ•˜๋‚˜์˜ ์Šˆํผ๋ทฐ์— ํฌํ•จ๋œ ๋‘ ์„œ๋ธŒ๋ทฐ๊ฐ€ ์„œ๋กœ ๊ฒน์น˜๊ฒŒ ๋˜๋ฉด, ๋‚˜์ค‘์— ์ถ”๊ฐ€๋œ(๋˜๋Š” ์„œ๋ธŒ๋ทฐ ๋ฐฐ์—ด์˜ ๋์œผ๋กœ ์˜ฎ๊ฒจ์ง„) ์„œ๋ธŒ๋ทฐ๊ฐ€ ๋งจ ์œ„์— ๋ณด์—ฌ์ง€๊ฒŒ ๋ฉ๋‹ˆ๋‹ค.

 

ํ”„๋ ˆ์ž„๊ณผ ๋ฐ”์šด๋“œ

- iOS์˜ ์ขŒํ‘œ์ฒด๊ณ„์˜ ์‹œ์ž‘์€ ์™ผ์ชฝ ์œ„๋ถ€ํ„ฐ ์‹œ์ž‘์ž…๋‹ˆ๋‹ค. ์ฆ‰, ์ œ์ผ ์™ผ์ชฝ์˜ ์ œ์ผ ์œ„์˜ ์ง€์ ์ด (0, 0)์ž…๋‹ˆ๋‹ค. ๋˜, ์ˆ˜ํ‰์ถ•์€ x๋กœ, ์ˆ˜์ง์ถ•์€ y๋กœ ํ‘œํ˜„ํ•ฉ๋‹ˆ๋‹ค.

- ๋ทฐ์˜ ํ”„๋ ˆ์ž„(frame)์€ ๋ทฐ์˜ ํฌ๊ธฐ์™€ ์œ„์น˜๋ฅผ ์Šˆํผ๋ทฐ์˜ ์ขŒํ‘œ๊ณ„๋ฅผ ๊ธฐ์ค€์œผ๋กœ ๋‚˜ํƒ€๋ƒ…๋‹ˆ๋‹ค.

- ๋ทฐ์˜ ๋ฐ”์šด๋“œ(bounds)๋Š” ๋ทฐ์˜ ํฌ๊ธฐ์™€ ์œ„์น˜๋ฅผ ํ•ด๋‹น ๋ทฐ ์ž์‹ ์˜ ์ขŒํ‘œ๊ณ„๋ฅผ ๊ธฐ์ค€์œผ๋กœ ๋‚˜ํƒ€๋ƒ…๋‹ˆ๋‹ค.

- ๋ทฐ์˜ ํ”„๋ ˆ์ž„(frame)๊ณผ ๋ฐ”์šด๋“œ(bounds)๋Š” CGRect๋ผ๋Š” ๊ตฌ์กฐ์ฒด๋ฅผ ํ†ตํ•ด์„œ ํ‘œํ˜„๋ฉ๋‹ˆ๋‹ค. CGRect๋Š” ์‚ฌ๊ฐํ˜•์˜ ํฌ๊ธฐ์™€ ์œ„์น˜์— ๋Œ€ํ•œ ์ •๋ณด๋ฅผ ๋‹ด๊ณ  ์žˆ์Šต๋‹ˆ๋‹ค. 

 

'iOS ๐ŸŽ > iOS' ์นดํ…Œ๊ณ ๋ฆฌ์˜ ๋‹ค๋ฅธ ๊ธ€

Delegation Pattern  (0) 2021.02.17
Design Pattern  (0) 2021.02.16
AutoLayout  (0) 2021.02.16
Cocoa Touch  (0) 2021.02.16
viewController life cycle  (0) 2021.01.27