
๐
Keyword๐
1๏ธโฃ Auto Layout
โผ๏ธ์ธ๋ถ๋ณ๊ฒฝ๊ณผ ๋ด๋ถ๋ณ๊ฒฝ์ ์ํด ์ฌ์ฉ
๊ฐ์ ์์ฝ๋ด์ฉ
- ๋ทฐ์ ํฌ๊ธฐ์ ์์น๋ฅผ ์ค์ ํ๋ ๋๊ตฌ
- **Constraint(์ ์ฝ์กฐ๊ฑด)**์ ํตํด์ ํฌ๊ธฐ์ ์์น๋ฅผ ๊ฒฐ์
- ๊ทธ๋ ๊ธฐ ๋๋ฌธ์ ์ธ๋ถ์ ํน์ ๋ด๋ถ์ ์์ธ์ ์ํ ํฌ๊ธฐ ๋ณํ์ ๋์ ์ผ๋ก ๋์ํ ์ ์๋ค.
- ex) ์ธ๋ก๋ชจ๋->๊ฐ๋ก๋ชจ๋ (ํน์ UI๊ฐ ์ฌ๋ผ์ง๊ฑฐ๋ ์ค์ด๋๋ ์ํฉ-๋๊ธ, ๋๋๊ธ UI)
์ ์ฝ ๊ธฐ๋ฐ์ค๊ณ ๋ฐฉ์์ ํตํด ๋ด๋ถ ๋ฐ ์ธ๋ถ ๋ณ๊ฒฝ ์ฌํญ์ ๋์ ์ผ๋ก ์๋ตํ๋ ์ฌ์ฉ์ ์ธํฐํ์ด์ค๋ฅผ ๊ตฌ์ถํ ์ ์๋ค.
1. ์ธ๋ถ๋ณ๊ฒฝ์ด๋?
-
*์ํผ๋ทฐ์ ํฌ๊ธฐ๋ ๋ชจ์์ด ๋ณ๊ฒฝ๋๋ฉด ์ธ๋ถ๋ณ๊ฒฝ์ด ๋ฐ์ํ๋ค.
- *swift์๋ ๋ทฐ ๊ณ์ธต์ด ์กด์ฌํ๋ค. ๋ทฐ๋ ์์ ์ ์ฝํ
์ธ ๋ฅผ ๋ณด์ฌ์ฃผ๋ ๊ฒ๊ณผ ๋๋ถ์ด, ๋ค๋ฅธ ๋ทฐ๋ฅผ ์ํ ์ปจํ
์ด๋๋ก์จ์ ์ญํ ๋ ํ๋ค. ํ๋์ ๋ทฐ๊ฐ ๋ค๋ฅธ ๋ทฐ๋ฅผ ํฌํจํ ๋, ๋ ๋ทฐ ์ฌ์ด์๋ ๋ถ๋ชจ(Parent View)-์์(Child View) ๊ด๊ณ๊ฐ ์์ฑ๋๋ค. ์ด ๊ด๊ณ์์ ์์๋ทฐ๋ ์๋ธ๋ทฐ(subview), ๋ถ๋ชจ๋ทฐ๋ ์ํผ๋ทฐ(superview)๋ก ๋ถ๋ฆฐ๋ค.
-
๋ณ๊ฒฝ์ด ์ผ์ด๋ ๋๋ง๋ค ์ฌ์ฉ ๊ฐ๋ฅํ ๊ณต๊ฐ์ ์ต๋ํ ์ฌ์ฉํ ์ ์๋๋ก ๋ทฐ ๊ณ์ธต ๋ ์ด์์์ ์
๋ฐ์ดํธ ํด์ฃผ์ด์ผํ๋ค.
- iPad์์ Split View๋ฅผ ์ฌ์ฉํ๊ฑฐ๋, Split View ์ฌ์ฉ์ ์ข
๋ฃํ ๋
- ๊ฐ๋ก๋ชจ๋(landscape mode) / ์ธ๋ก๋ชจ๋ (๊ธฐ๊ธฐ์ ํ์ )
- ํ์ฑํ ์ฝ (Active call) ๋ฐ ์ค๋์ค ๋
น์ ๋ฐ๊ฐ ๋ํ๋๊ฑฐ๋ ์ฌ๋ผ์ง๋ ๊ฒฝ์ฐ
- ๋ค๋ฅธ ํฌ๊ธฐ์ ํด๋์ค๋ฅผ ์ง์ํ๊ธธ ์ํ๋ ๊ฒฝ์ฐ
- ๋ค๋ฅธ ํฌ๊ธฐ์ ์คํฌ๋ฆฐ์ ์ง์ํ๊ธธ ์ํ๋ ๊ฒฝ์ฐ
-
์ ๊ฐ์ ๊ฒฝ์ฐ์์๋ ์ฑ์ผ๋ก ๋ถํฐ ๋์ ์ธ ์๋ต์ ์๊ตฌํ๋ค. ์ ์ํ ์ธํฐํ์ด์ค๋ฅผ ๋ง๋ค๋ฉด ๋ค์ํ ๋๋ฐ์ด์ค์์ ์ฑ์ ๋์ผํ๊ฒ ์คํ ํ ์ ์๋ค. ๋ํ Auto Layout์ iPad์ Split View์ Slide Over๋ฅผ ์ง์ํ๋ ํต์ฌ ์์์ด๋ค.

2. ๋ด๋ถ๋ณ๊ฒฝ์ด๋?
-
์ฌ์ฉ์ ์ธํฐํ์ด์ค์ ๋ทฐ์ ํฌ๊ธฐ ๋๋ ์ค์ ์ด ๋ณ๊ฒฝ๋์์ ๋ ๋ฐ์ํ๋ค.
- ์ ํ๋ฆฌ์ผ์ด์
์์ ํ์(display)ํ๋ ์ปจํ
์ธ ๊ฐ ๋ณ๊ฒฝ๋์์ ๊ฒฝ์ฐ
- ์ ํ๋ฆฌ์ผ์ด์
์ด ๊ตญ์ ํ(Internationalization)๋ฅผ ์ง์ํ๋ ๊ฒฝ์ฐ
- ์ ํ๋ฆฌ์ผ์ด์
์ด ๋์ ํ์
(Dynamic Type)์ ์ง์ํ๋ ๊ฒฝ์ฐ
-
์ฑ์ ์ปจํ
์ธ ๊ฐ ๋ณ๊ฒฝ๋์์ ๋, ์๋ก์ด ์ปจํ
์ธ ๋ ์ด์ ๊ณผ ๋ค๋ฅธ ๋ ์ด์์์ ์๊ตฌํ ์๋ ์๋ค. ์ด๋ ๋ณดํต ์ฑ์์ text๋ ์ด๋ฏธ์ง๋ฅผ ๋ํ๋ผ ๋ ๋ฐ์ํ๋ค. ์๋ฅผ ๋ค์ด ๋ด์ค์ฑ์ ๋ด์ค ๊ธฐ์ฌ ๊ฐ๊ฐ์ ์ฌ์ด์ฆ์ ๋ฐ๋ผ ๋ ์ด์์์ ์กฐ์ ํ ํ์๊ฐ ์๋ค. ๋ํ ํฌํ ์ฝ๋ผ์ฃผ๋ ๋ค์ํ ์ด๋ฏธ์ง์ ํฌ๊ธฐ์ ์ข
ํก๋น๋ฅผ ๋ค๋ค์ผ ํ๋ค.
-
๊ตญ์ ํ๋(Internationalization)๋ ์ฑ์ด ๋ค์ํ ์ธ์ด, ์ง์ญ, ๋ฌธํ์ ์ ์ํ ์ ์๋๋ก ํ๋ ๊ณผ์ ์ด๋ค. ๊ตญ์ ํ๋ ์ฑ์ ๋ ์ด์์์ ์ด๋ฌํ ์ฐจ์ด์ ๋ค์ ๊ณ ๋ คํด์ผ ํ๋ฉฐ, ์ฑ์ด ์ง์ํ๋ ๋ชจ๋ ์ธ์ด ๋ฐ ์ง์ญ์์ ์ฌ๋ฐ๋ฅด๊ฒ ํ์๋์ด์ผ ํ๋ค.(ํ๊ธฐ ์์...)
๐ญAutoLayout์ ์ ํ์ํ ๊น์?๐ญ
๐ก๋ค์ํ ๊ธฐ๊ธฐ๊ฐ ์กด์ฌํ๊ณ , ๊ทธ์ ๋ฐ๋ฅธ ๊ธฐ๋ฅ๋ ๋ค์ํ๊ณ , ๋ค์ํ ๊ตญ๊ฐ๊ฐ ์ ํ์ ๊ธฐ๊ธฐ๋ฅผ ์ฌ์ฉํ๊ธฐ ๋๋ฌธ์ ์ด๋ฅผ ๋์ ์ผ๋ก ์๋ตํ๋ ์ฌ์ฉ์ ์ธํฐํ์ด์ค๋ฅผ ๋ง๋ค๊ธฐ ์ํด ํ์ํ๋ค!
2๏ธโฃ Inspector ์์ญ
โผ๏ธํธ์ง, ์ ๋ณด์ ์์ญ
- ํ๋ก์ ํธ ๋ค๋น๊ฒ์ดํฐ์์ ์ ํํ ๊ฐ์ฒด ๋๋ ์ ์ฒด ํ๋ก์ ํธ์ ๋ํ ์ ๋ณด๋ฅผ ๋ณด๊ณ ํธ์งํ ์ ์๋ค. ์ธ์คํํฐ ์์ญ์ ์ด๊ธฐ ์ํด์๋ ๋ฉ์ธ์ฐฝ์ ํด๋ฐ์์ ์ค๋ฅธ์ชฝ ๋ฒํผ์ ํด๋ฆญํ๋ฉด ๋๋ค.

- ํน์ ์์ฑ์ ํ์ํ๋ ค๋ฉด ๋ฒํผ์ ํด๋ฆญํ๋ฉด ๋๋ค. ์ ํํ ํญ๋ชฉ์ ๋ฐ๋ผ ์ฌ์ฉ๊ฐ๋ฅํ ๊ธฐ๋ฅ์ด ๋ฌ๋ผ์ง๋ค.
๐ญInspector ์์ญ์๋ ์ด๋ค ๊ฒ๋ค ์๋์?๐ญ
์ธ์คํํฐ ์์ญ์ ์ฌ๋ฌ ๊ฐ์ฒด์ ๋ํ ์์ฑ์ ๊ด๋ฆฌํ๋ ์์ญ์ผ๋ก, ๊ฐ์ฒด๋ง๋ค ๊ด๋ฆฌํ ์ ์๋ ์์ฑ์ด ๋ฌ๋ผ์ง๋ค.

-
ํ์ผ ์ธ์คํํฐ : ํ๋ก์ ํธ ๋ด๋น๊ฒ์ดํฐ์์ ์ ํํ ํ์ผ์ ๋ํ ํ์ผ๋ช
๊ณผ ์ข
๋ฅ๋ฅผ ๋ณด์ฌ์ฃผ๋ฉฐ, ํ์ผ์ ๊ฒฝ๋ก๋ ์ ์ ์๋ค. ์คํ ๋ฆฌ๋ณด๋์ ๊ฒฝ์ฐ ํ์ผ ์ ๋ณด๋ฟ๋ง ์๋๋ผ ๋น๋ ๋์ iOS๋ฒ์ ๋ฑ ์ธํฐํ์ด์ค ๋น๋์ ์ค์ ๋ ๋ณ๊ฒฝํ ์ ์๋ค. ํ์ผ๋ช
์ ๋ณ๊ฒฝํ ์ ์์ผ๋ฉฐ, ์ฑ ๊ฐ๋ฐ ๊ณผ์ ์์ ๋น๋ ๋์์ ๋ฒ์๋ฅผ ์กฐ์ ํ ๋์๋ ์ฌ์ฉํ๋ค.
-
ํ์คํ ๋ฆฌ ์ธ์คํํฐ : ํ์ฌ ํ์ผ์ ๋ํ ์ ์ฒด ํ์คํ ๋ฆฌ๋ฅผ ๋ณผ ์ ์๋ค. ์ปค๋ฐํ ์๊ฐ๊ณผ ๋ ์ง, ๋ด์ฉ ๋ฑ์ ์ ์ ์๋ค.
-
ํตํฌํ ์ธ์คํํฐ : ์ ํ๋ ๊ฐ์ฒด์ ๋ํ ๋์๋ง์ ์ ๊ณตํ๋ค.
-
์์ด๋ดํฐํฐ ์ธ์คํํฐ : ์ธํฐํ์ด์ค ๋น๋์ ์ถ๊ฐ๋ ๊ฐ์ฒด์ ์ด๋ฅผ ๊ตฌํํ ํด๋์ค ์ฌ์ด์ ์ฐ๊ฒฐ์ด๋ ๊ฐ์ฒด์ ID ๋ฑ, ๊ฐ์ฒด์ ๊ณ ์ ํ ์ ๋ณด๋ฅผ ๊ด๋ฆฌํ๋ ์ญํ ์ ํ๋ค. ์คํ ๋ฆฌ๋ณด๋์ ์ถ๊ฐ๋ ๋ทฐ์ปจํธ๋กค๋ฌ๋ ํ๋กํ ํ์
์
์ ๊ฒฝ์ฐ ์ฃผ๋ก ์์ค ์ฝ๋๋ฅผ ํตํด ์์ธ ๊ธฐ๋ฅ์ด ๊ตฌํ๋๋๋ฐ, ํด๋์ค ํ์ผ์ ์์ค ์ฝ๋๋ฅผ ์์ฑํ ํ ์ด ํญ์ ์์ฑ์ ์ด์ฉํ์ฌ ๊ฐ์ฒด์ ์ฐ๊ฒฐํ ์ ์๋ค. UI ๊ฐ์ฒด๋ฅผ ์์ค ์ฝ๋์์ ์ฐธ์กฐํ๊ธฐ ์ํ ์๋ณ๊ฐ์ ์ง์ ํ ๋์๋ ์ฌ์ฉํ๋ค.
-
์ดํธ๋ฆฌ๋ทฐํธ ์ธ์คํํฐ : ํ์ฌ ์ธํฐํ์ด์ค ๋น๋์์ ์ ํ๋ ๊ฐ์ฒด์ ์์ฑ์ ๊ด๋ฆฌํ๋ค. ๊ฐ์ฒด๋ค์ ํน์ฑ์ ๋ฐ๋ผ ์๋ก ๋ค๋ฅธ ์์ฑ์ ๊ฐ์ง๋ฏ๋ก ์ด๋ค ๊ฐ์ฒด๋ฅผ ์ ํํ๋๋์ ๋ฐ๋ผ ํ์๋๋ ํญ๋ชฉ๋ค์ด ๋ฌ๋ผ์ง๋ค.
-
์ฌ์ด์ฆ ์ธ์คํํฐ : ์ ํ๋ ๊ฐ์ฒด์ ์ธํ์ ๋ํ ์์ฑ์ ๊ด๋ฆฌํ๋ค. ์ฃผ๋ก ํฌ๊ธฐ์ ์์น, ๋ฐฐ์น ๋ฐฉ์์ ๋ค๋ฃฌ๋ค.
-
์ปค๋ฅ์
์ธ์คํํฐ : ์ธํฐํ์ด์ค ๋น๋์ ์์ค ์ฝ๋ ๊ฐ์ ์ฐ๊ฒฐ ๊ด๊ณ๋ฅผ ๊ด๋ฆฌํ๋ค. ๋ทฐ์ปจํธ๋กค๋ฌ ์ฌ์ด์ ํ๋ฉด ์ด๋์ ์ฒ๋ฆฌํ๋ ์ธ๊ทธ์จ์ด, ์คํ ๋ฆฌ๋ณด๋์ ๊ฐ์ฒด ์์ฑ์ ์์ค ์ฝ๋๊ฐ ์ฐธ์กฐํ ๋ ์ฌ์ฉํ๋ @IBOutlet, ๋ฒํผ์ด๋ ํ
์ด๋ธ ์
๋ฑ์์ ๋ฐ์ํ ์ด๋ฒคํธ๋ฅผ ํน์ ํด๋์ค์ ์ด๋ฒคํธ ํธ๋ค๋ฌ๋ก ์ ๋ฌํด์ฃผ๋ @IBAction ๋ฑ์ ์ฐ๊ฒฐ ์ ๋ณด๋ฅผ ๊ด๋ฆฌํ๋ค.

- File inspector - ์ด๋ฆ, ์ ํ, ๊ฒฝ๋ก ๋ฐ ํ๋ก์ ํธ ๋ด ์์น ๋ฑ๊ณผ ๊ฐ์ ํ์ผ์ ๋ฉํ๋ฐ์ดํฐ๋ฅผ ๋ณด๊ณ ๊ด๋ฆฌํฉ๋๋ค. ์ ํํ ํ์ผ์ด ์คํ ๋ฆฌ๋ณด๋๋ผ๋ฉด ํ์ผ ์ ๋ณด์ ๋๋ถ์ด ๋น๋ ๋์ iOS ๋ฒ์ , UI ์ค๊ณ์ ๋ํ ์๋ ๋ ์ด์์ ์ต์
๋ฑ์ ์ค์ ํ ์ ์๋ ํญ๋ชฉ์ด ํ์๋ฉ๋๋ค. ์ฑ ๊ฐ๋ฐ ๊ณผ์ ์์ ๋น๋ ๋์ ๋ฒ์๋ฅผ ์กฐ์ ํ๊ฑฐ๋ ์ฌ๋ฌ ํ๋ฉด ํฌ๊ธฐ์ ๋์ํ๋ ์ฑ์ ์ ์ํ ๋, ๊ทธ๋ฆฌ๊ณ ๊ตญ๊ฐ๋ณ ์ธ์ด ์ค์ ์ ์ฒ๋ฆฌํด์ผ ํ ๋์๋ ์ด ํญ์ ์ด์ฉํ์ฌ ํ์ํ ๋ด์ฉ์ ํธ์งํ ์ ์์ต๋๋ค.
- Quick Help inspector - ๊ฐ๊ฒฐํ ์ค๋ช
, ์ ์ธ๋ ์์น ๋ฐ ๋ฐฉ๋ฒ, ๋ฒ์, ์ฌ์ฉํ๋ ๋งค๊ฐ๋ณ์, ํ๋ซํผ ๋ฐ ์ํคํ
์ณ ์ฌ์ฉ์ฑ์ ํฌํจํ์ฌ ๊ธฐํธ์ ๋ํ ์ธ๋ถ ์ ๋ณด๋ฅผ ๋ณผ ์ ์์ต๋๋ค.
- Identity inspector - ํด๋์ค ์ด๋ฆ, ์ก์ธ์ค ๊ฐ๋ฅ์ฑ ์ ๋ณด, ๋ฐํ์ ์์ฑ ๋ฐ ๋ ์ด๋ธ๊ณผ ๊ฐ์ ๊ฐ์ฒด์ ๋ํ ๋ฉํ๋ฐ์ดํฐ๋ฅผ ๋ณด๊ณ ๊ด๋ฆฌํฉ๋๋ค. ํนํ ์คํ ๋ฆฌ๋ณด๋์ ์ถ๊ฐ๋ ๋ทฐ ์ปจํธ๋กค๋ฌ๋ ํ๋กํ ํ์
์
์ ์ฃผ๋ก ์์ค ์ฝ๋๋ฅผ ํตํด ์์ธ ๊ธฐ๋ฅ์ด ๊ตฌํ๋๋๋ฐ, ์ด๋ฅผ ์ํด ํด๋์ค ํ์ผ์ ์์ฑํ ํ ์ด ํญ์ ์์ฑ์ ์ด์ฉํ์ฌ ํ๋ฉด์์ ๊ฐ์ฒด์ ์ฐ๊ฒฐํ ์ ์์ต๋๋ค. UI ๊ฐ์ฒด๋ฅผ ์์ค ์ฝ๋์์ ์ฐธ์กฐํ๊ธฐ ์ํ ์๋ณ๊ฐ์ ์ ์ํ ๋์๋ ์์ด๋ดํฐํฐ ์ธ์คํํฐ ํญ์ ์ฌ์ฉํฉ๋๋ค.
- Attributes inspector - ์ ํ๋ ์ธํฐํ์ด์ค ๊ฐ์ฒด์ ์์ฑ์ ๊ด๋ฆฌํ ์ ์์ต๋๋ค.
- Size inspector - ์ ํ๋ ์ธํฐํ์ด์ค ๊ฐ์ฒด์ ์ธํ ์์ฑ์ ๊ด๋ฆฌํฉ๋๋ค. ์ด๊ธฐํฌ๊ธฐ ๋ฐ ์์น, ๋ณด๊ธฐ ์ ์ฝ์กฐ๊ฑด, ์ต์ ๋ฐ ์ต๋ ํฌ๊ธฐ, ์๋ ํฌ๊ธฐ ์กฐ์ ๊ท์น์ ํธ์งํ ์ ์์ต๋๋ค.
- Connections inspector - ์ธํฐํ์ด์ค ๋น๋์ ์์ค ์ฝ๋ ๊ฐ์ ์ฐ๊ฒฐ ๊ด๊ณ๋ฅผ ๊ด๋ฆฌํฉ๋๋ค. ์คํ ๋ฆฌ๋ณด๋ ํ์ผ์ ํตํด ์ค๊ณํ ํ๋ฉด ์ธํฐํ์ด์ค๋ ํ๋ก๊ทธ๋๋ฐ์ ์ผ๋ก ๋์ํ๊ธฐ ์ํด ์์ค ์ฝ๋์ ์ฐ๊ฒฐ๋์ด์ผ ํ๋๋ฐ, ์ด ๋ชจ๋ ์ฐ๊ฒฐ ๊ด๊ณ๋ฅผ ๋ชจ๋ ๊ด๋ฆฌํ๋ ๊ฒ์ด ์ปค๋ฅ์
์ธ์คํํฐ ํญ์ด๋ผ๊ณ ํ ์ ์์ต๋๋ค. ์ปค๋ฅ์
์ธ์คํํฐ ํญ์ ๋ชฉ๋ก์์ ์ข์ธก์ ์ธํฐํ์ด์ค ๋น๋ ์์ ๊ฐ์ฒด๋ฅผ, ์ฐ์ธก์ ์์ค ์ฝ๋์์ ๊ฐ์ฒด๋ฅผ ๋ํ๋
๋๋ค. ์ข์ฐ์ธก์ด ์๋ก ์ฐ๊ฒฐ๋์ด ์๋ค๋ฉด ์ธํฐํ์ด์ค ๋น๋ ์์ ๊ฐ์ฒด์ ์์ค ์ฝ๋ ์์ ๊ฐ์ฒด๋ค๋ ์๋ก ์ฐ๊ฒฐ๋์ด์๋ค๋ ๊ฒ์ ์๋ฏธํฉ๋๋ค.
- Bindings inspector - ๋ฐ์ธ๋ฉ์ ๋ณด๊ณ ํธ์งํฉ๋๋ค.
- View Effects inspector - ์๋๋ฉ์ด์
, ์ํ ์ฑ๋, ์ ํ ๋ฐ ๊ธฐํ ์๊ฐ์ ํน์ฑ์ ๋ํ ์ค์ ์ ๋ณด๊ณ ํธ์งํฉ๋๋ค.
- SKNode inspectorr - SpriteKit ๋
ธ๋์ ์์ฑ์ ๋ณด๊ณ ํธ์งํฉ๋๋ค.
- Source Control inspector - ์ ํํ ์ ์ฅ์ ๋๋ ์ปค๋ฐ์ ์ธ๋ถ ์ ๋ณด๋ฅผ ํ์ํฉ๋๋ค.
Xcode Help
3๏ธโฃ Constraint
โผ๏ธ์ ์ฝ์กฐ๊ฑด!
์ฌ์ฉ์ ์ธํฐํ์ด์ค๋ฅผ ๊ตฌ์ฑํ๋ ๋ฐฉ๋ฒ์ ํฌ๊ฒ 3๊ฐ์ง์ด๋ค.
1. Frame ๊ธฐ๋ฐ์ ํ๋ก๊ทธ๋๋ฐ ๋ฐฉ์(Frame-Based Layout)
2. Autoresizing masks
3. Auto Layout
- Constraint์ Auto Layout์์ ์ฌ์ฉ์ ์ธํฐํ์ด์ค๋ฅผ ์ ์ํ๊ธฐ ์ํ ์กฐ๊ฑด์ด๋ค.
- ์ ์ฝ์กฐ๊ฑด์ ์ผ๋ฐ์ ์ผ๋ก ๋ ๋ทฐ์ ๊ด๊ณ๋ฅผ ๋ํ๋ธ๋ค.
- ์ ์ฝ์กฐ๊ฑด์ ๊ธฐ๋ฐ์ผ๋ก ๊ฐ ๋ทฐ์ ํฌ๊ธฐ์ ์์น๋ฅผ ๊ณ์ฐํ๊ณ , ๋ด๋ถ ๋ฐ ์ธ๋ถ ๋ณ๊ฒฝ์ ๋์ ์ผ๋ก ๋ฐ์ํ๋ ๋ ์ด์์์ ์์ฑํ๋ค.
๐ญConstraint์ ์์๋ ์ด๋ค ๊ฒ๋ค์ด ์๋์?๐ญ

- size attributes
- location attributes
- Top
- Bottom
- Center X
- Center Y
- Left or Leading
- Right or Trailing
- Leading๊ณผ Trailing์ ์ผ์ชฝ/์ค๋ฅธ์ชฝ ๊ฐ๋
์ด ์๋๋ค
- Leading : Text๊ฐ ์์๋๋ ์ง์
- Trailing : Text๊ฐ ๋๋๋ ์ง์
- Baseline
๐ญConstraint์ ๋์ ์ธ ํ์ฉ๐ญ
-
Auto Layout์ ๊ฐ๋ฅํ ํด๋ต์ด ํ๋์ธ ๋ฐฉ์ ์์ ์ ๊ณตํ๋ ๊ฒ์ ๋ชฉํ๋ก ํ์ง๋ง ์ ๋งคํ ์ ์ฝ์กฐ๊ฑด(ambiguous)์๋ ๋ ์ด์์ ํด๋ต์ด ์์์ ์์ต๋๋ค.
-
๋ง์กฑํ ์ ์๋ ์ ์ฝ(unsatisfiable)์ ์ฑ๋ฆฝ์ด ์๋ฉ๋๋ค. -> ์ ์ฝ์กฐ๊ฑด์ ์ ์ฌ์ฉํ๋ ๊ฒ์ด ์ค์ํ๋ค!
-
์ฌ์ฉํ ์ ์ฝ์กฐ๊ฑด์ ์ ํํ๋๋ฐ๋ ๋ค์ํ ๋ฐฉ๋ฒ์ด ์๋ค.
-
์ผ๋ฐ์ ์ธ ๊ฒฝ์ฐ์ ์ ์ฝ์กฐ๊ฑด์ ๊ฐ ๋ทฐ์ ํฌ๊ธฐ์ ์์น๋ฅผ ๋ชจ๋ ์ ์ํด์ผํ๋ค. -> Constraints๋ฅผ ์ด์ฉํด์ ๋ทฐ์ "์์น"์ "ํฌ๊ธฐ"๋ฅผ "๋์ "์ผ๋ก ์ง์ ํ๋ ๊ฒ
-> ์ ์ถํด์ ์๋์ผ๋ก ์กฐ๊ฑด์ ๊ณ์ฐํ๋ ๊ฒฝ์ฐ๋ ์๋ค.

- ์ฒซ๋ฒ์งธ๋ leading๊ณผ width๋ฅผ ์ฃผ๋ฉด, trailing์ superview์ ์ฌ์ด์ฆ๋ ๋ค๋ฅธ ์ ์ฝ์กฐ๊ฑด์ ์ํด ์๋์ผ๋ก ๊ณ์ฐ๋ฉ๋๋ค.
- ๋๋ฒ์งธ๋ leading๊ณผ trailing์ ์ฃผ๋ฉด, width๋ ์๋์ผ๋ก ๊ณ์ฐ๋ฉ๋๋ค.
- ์ธ๋ฒ์งธ๋ leading๊ณผ center ์ ๋ ฌ์ ์ฃผ๋ฉด, width์ trailing ์๋์ผ๋ก ๊ณ์ฐ๋ฉ๋๋ค.
โ๊ทธ๋ผ ๋ค์๊ณผ ๊ฐ์ ํ๋ฉด์ ๋ง๋๋ ค๋ฉด ์ด๋ค ์ ์ฝ์กฐ๊ฑด์ ์ฃผ์ด์ผ ํ ๊น์?


1๏ธโฃ

Red.top = 1.0 * Superview.top + 20.0
Superview.bottom = 1.0 * Red.bottom + 20.0
Blue.top = 1.0 * Superview.top + 20.0
Superview.bottom = 1.0 * Blue.bottom + 20.0
Red.leading = 1.0 * Superview.leading + 20.0
Blue.leading = 1.0 * Red.trailing + 8.0
Superview.trailing = 1.0 * Blue.trailing + 20.0
Red.width = 1.0 * Blue.width + 0.0
2๏ธโฃ

Red.top = 1.0 * Superview.top + 20.0
Superview.bottom = 1.0 * Red.bottom + 20.0
Red.top = 1.0 * Blue.top + 0.0
Red.bottom = 1.0 * Blue.bottom + 0.0
Red.leading = 1.0 * Superview.leading + 20.0
Blue.leading = 1.0 * Red.trailing + 8.0
Superview.trailing = 1.0 * Blue.trailing + 20.0
Red.width = 1.0 * Blue.width + 0.0
โ๋ญ๊ฐ ๋ ์ข์ ๋ฐฉ๋ฒ์ผ๊น์?
๋ญ๊ฐ ๋ ์ข์ ๋ฐฉ๋ฒ์ผ๊น ๋ณด๋ค๋ ๊ฐ๊ฐ์ ์ฅ๋จ์ ์ด ์์ด์!
์ฒซ ๋ฒ์งธ ๋ฐฉ๋ฒ์ ํ๋์ ๋ทฐ๊ฐ ์ง์์ง ๊ฒฝ์ฐ์๋ ๋ค๋ฅธ ๋ทฐ์ ์ง์ฅ์ด ์๋ค๋ ๊ฒ์ด ์ฅ์ ์ด์์. ์๋ฅผ๋ค์ด ๋นจ๊ฐ ๋ทฐ๋ฅผ ์ ๊ฑฐํ๋ฉด ํ๋์์ ์ธ ๊ฐ์ง์ ์ ์ฝ์กฐ๊ฑด์ผ๋ก ์ ์ง๋๊ณ , ํ๋์ ์ ์ฝ์กฐ๊ฑด๋ง ์ถ๊ฐํ๋ฉด ์ ํจํ ๋ ์ด์์์ ๋ง๋ค ์ ์์ด์! ๋ ๋ฒ์งธ ๋ฐฉ๋ฒ์ ๋นจ๊ฐ๋ทฐ๋ฅผ ์ ๊ฑฐํ๋ฉด ํ๋์ ๋ทฐ์ ํ๋์ ์ ์ฝ์กฐ๊ฑด๋ง ๋จ๊ฒ ๋๊ธฐ ๋๋ฌธ์ ์ ํจํ ๋ ์ด์์์ ๋ง๋๋ ค๋ฉด ์ฒ์๋ถํฐ ์ ์ฝ์กฐ๊ฑด์ ์ค์ ํด ์ฃผ์ด์ผ ํด์!
ํ์ง๋ง ์ฒซ ๋ฒ์งธ ๋ฐฉ๋ฒ๋ ๋จ์ ์ด ์์ด์. ์ฒซ ๋ฒ์งธ ๋ฐฉ๋ฒ์์ ๋นจ๊ฐ์๊ณผ ํ๋์ ๋ทฐ์ ์๋จ๊ณผ ํ๋จ์ ์ ๋ ฌํ๋ ค๋ฉด ๊ฐ์ ์์๊ฐ์ ์ ์ฉํด์ผํ๊ณ , ๋ง์ฝ์ ํ๋์ ๋ทฐ์ ์์๋ฅผ ๋ณ๊ฒฝํ ๊ฒฝ์ฐ์๋ ๋ค๋ฅธ ์์ ๊ฐ๋ ๋ณ๊ฒฝํด ์ฃผ์ด์ผํด์.
4๏ธโฃ SafeArea
โผ๏ธ๋ฒ ์ ค๋ฆฌ์ค ๋์คํ๋์ด๊ฐ ๊ฐ๋ฐ๋๋ฉด์, ์ ๋ฉด์นด๋ฉ๋ผ, ์ผ์๋ฑ์ ๋ฐฐ์นํ๊ธฐ ์ํ '๋
ธ์น'์ ๋์ํ๊ธฐ ์ํ ๋ฐฉ๋ฒ!
SafeArea
- SafeArea๋ ์ธํฐํ์ด์ค์์ ์ปจํ
์ธ ๊ฐ ์ ๋๋ก ๋ณด์ผ์ ์๋ ๋ถ๋ถ์๋ง ๋ทฐ๋ฅผ ๋ฐฐ์นํ๋๋ก ๋์์ ์ฃผ๋ ์์ญ์
๋๋ค.

- ์๋ฅผ ๋ค๋ฉด ๋ค๋น๊ฒ์ด์
์ปจํธ๋กค๋ฌ๋ ์ฐ๋ฆฌ์ ๋ทฐ ์์ ๋ค๋น๊ฒ์ด์
๋ฐ๋ฅผ ๋์์ฃผ๋๋ฐ, ๋ค๋น๊ฒ์ด์
๋ฐ ๋ฐ์ ๋ถ๋ถ์ ๊ฐ๋ ค์ง ์ ์์ผ๋, SafeArea ๋ ์ด๋ฐ ๋ทฐ๋ค์ ๋ฐ์ํด์ ๊ฐ์ ๊ณ์ฐํด์ ์๋ ค์ค๋๋ค.
๐ญsuperview VS SafeArea๐ญ


- ๋
ธ์น์์ ์ฐจ์ด๋๋ ๋ชจ์ต


- iPhone 8 ์ํํ์์ค์์ ์ฐจ์ด๋๋ ๋ชจ์ต
๐
Check List๐
โ
Frame ๊ธฐ๋ฐ ๋ ์ด์์๊ณผ Autolayout์ผ๋ก ๋ ์ด์์์ ์ง๋ ๋ฐฉ๋ฒ์ ์ฐจ์ด์ ์ ์ดํดํ๋์?
- Frame ๊ธฐ๋ฐ ๋ ์ด์์
- ํ๋ ์ ๋ ์ด์์์ ๊ฐ ๋ทฐ์ ํ๋ ์์ ํ๋ก๊ทธ๋๋ฐ ๋ฐฉ์์ผ๋ก ์ค์ ํ๋ค.
- ํ๋ ์ ๋ ์ด์์์ ๋ทฐ์ ์ขํ๊ณ์์ ๋ทฐ์ ์์ , ๋์ด ๋ฐ ํญ์ ์ ์ํ๋ค.
- ํ๋ ์ ๋ ์ด์์์ ์ ์ฐ์ฑ๊ณผ ์ฑ๋ฅ์ ๊ทน๋ํ ํ ์ ์๋ค๋๋ฐ ์ฅ์ ์ด ์๋ค. ๋ณ๊ฒฝ์ด ๋ฐ์ํ๋ฉด ์ํ๋๋ฐ๋ก ๋ณ๊ฒฝํ ์ ์๊ธฐ ๋๋ฌธ์ด๋ค. ํ์ง๋ง ๋ชจ๋ ๋ณ๊ฒฝ์ ์ฌ์ฉ์๊ฐ ์ง์ ๊ด๋ฆฌํด์ผํ๊ธฐ ๋๋ฌธ์ ๊ฐ๋จํ ์ธํฐํ์ด์ค๋ฅผ ๋ฐฐ์นํ๋๋ฐ๋ ๋๋ฒ๊น
๋ฐ ์ ์ง๋ณด์์ ๋ง์ ๋
ธ๋ ฅ์ด ํ์ํ๋ค.

- Autolayout
- ์๋๋ ์ด์์์ ์ ์ฝ์กฐ๊ฑด์ ์ฌ์ฉํด ์ฌ์ฉ์ ์ธํฐํ์ด์ค๋ฅผ ์ ์ํ๋ค.
- ๋ด๋ถ ๋ณ๊ฒฝ๊ณผ ์ธ๋ถ ๋ณ๊ฒฝ์ ๋์ ์ผ๋ก ๋ฐ์ํ๋ ๋ ์ด์์์ ์์ฑํ ์ ์๋ค.

โ
Autolayout์์ constraint์ ์๋ฏธ์ constraint๋ฅผ ์ฃผ์ด ๋ทฐ๋ฅผ ๋ฐฐ์นํ๋ ๋ฐฉ๋ฒ์ ๋ํด ์ดํดํ๋์?
โ
Autolayout์์ equal width, equal height์ ๋ํด ์ดํดํ๊ณ ์ง์ ์ค์ตํด๋ณด์๋์?
โ
Autolayout์์ Align center X, Y์ ๋ํด ์ดํดํ๊ณ ์ง์ ์ค์ตํด๋ณด์๋์?
โ
์ ์ฌํญ์ ์ข
ํฉํ์ฌ Autolayout์ผ๋ก ๋ทฐ๋ฅผ ๊ฐ๋จํ๊ฒ ๋ฐฐ์นํด๋ณด์๊ณ , iPhone8 ๊ณผ iPhone13 Pro Max ์๋ฎฌ๋ ์ดํฐ๋ก ๋๋ ธ์ ๋ ๋ทฐ๊ฐ ๋น์จ์ ์๋ง๊ฒ ๋ฐฐ์น๋์๋์?

- UI imageview - ์ค๊ฐ์์ ๋ถํฐ Y์ถ์ผ๋ก 0.4์์น, X์ถ ๊ฐ์ด๋ฐ ์ ๋ ฌ
- UI label(Graph) - ์ค๊ฐ์์ ๋ถํฐ Y์ถ์ผ๋ก 0.5์์น, X์ถ ๊ฐ์ด๋ฐ ์ ๋ ฌ
- UI view(7๊ฐ) - ๋์ด ๋๋น ๊ฐ๊ฐ ์ค์ , bottom 0, X์ถ(0.25, 0.5, 0.75, 1, 1.25, 1.5, 1.75) ์ ๋ ฌ
- UI view(์๋ ํ์ ๋ฐ) - bottom 0, X์ถ ๊ฐ์ด๋ฐ ์ ๋ ฌ
iPhone8 ์๋ฎฌ๋ ์ด์

iPhone13 Pro ์๋ฎฌ๋ ์ด์
