- ๐ซ Introduce ๐ซ
- ๐ฑ ๊ตฌํ ํ๋ฉด
- ๐๏ธ ํ๋ก์ ํธ ๊ตฌ์กฐ
- ๐จ STEP๋ณ ๊ตฌํ ๋ด์ฉ
- ๐ ํธ๋ฌ๋ธ ์ํ
- 1. ๋คํธ์ํฌ ๋ชจ๋ธ ๊ตฌ์ฑ
- 2. Modern CollectionView ๊ตฌ์ฑ
- 3. DiffableDataSource - snapshot expensive cost ๋ฌธ์
- 4. UITextView Placeholder ๋ง๋ค๊ธฐ
- 5. ํค๋ณด๋๊ฐ ํ๋ฉด์ ๊ฐ๋ฆฌ๋ ํ์
- 6. ๋๋ณด๊ธฐ ๊ธฐ๋ฅ ๊ตฌํ
- 7. Preview ๊ธฐ๋ฅ ๊ตฌํ
- 8. Gesture์ ์ฌ์ฉ๋ฒ
- 9. addArrangedSubview๋?
- 10. ํฐ ํ๋ฉด์ ๊ฐ์ง ๊ธฐ๊ธฐ ๋์
- ๐๐ป ์ถํ ๊ณํ
๐๐ป๐๐ปโโ๏ธ๐จ ํ๋ก์ ํธ ๊ธฐ๊ฐ: 23. 05. 17
~ 23. 06. 14
Lust3r |
- ์๋น์ค : ์์ค์ ๋ค์ํ ์ฑ
์ ๋ํ ์ ๋ณด๋ฅผ ์ ๊ณต
- ๋ฒ ์คํธ ์ ๋ฌ ๋ชฉ๋ก
- ์ฅ๋ฅด๋ณ ๋์ ๋ชฉ๋ก
- ๊ฐ๋ณ ๋์ ์์ธ ์ ๋ณด
- ๊ฐ๋ณ ๋์ ๋ฉ๋ชจ ๊ธฐ๋ฅ
- ๊ฐ๋ณ ๋์ ๋ฏธ๋ฆฌ๋ณด๊ธฐ ๊ธฐ๋ฅ
- ํค์๋ ๊ฒ์(์๋ช , ์ ์)
- ์ฆ๊ฒจ์ฐพ๊ธฐ ๊ธฐ๋ฅ
- ๊ธฐ์ ์คํ :
Swift(UIKit)
,Figma(Design)
- ํ๋ก์ ํธ ํ๊ณ :
- ์ค๋กฏ์ด ํผ์ ๊ณต๋ถํ์ฌ ๊ตฌํํ ์ฒซ ๊ฐ์ธ ํ๋ก์ ํธ
- ์งง์ ๊ธฐ๊ฐ ๋์ ๋ชฐ์ ํ์ฌ ํ๋ก์ ํธ๋ฅผ ์ํ
- ๊ฐ๋ฐ ์ ๊ตฌํํด์ผ ํ๋ ๊ธฐ๋ฅ๊ณผ ์ถํ ๊ฐ๋ฐํ ๊ธฐ๋ฅ์ ๊ณ ๋ คํ์ฌ โจFigma ํ์ด์ง ๋ถ๋ฆฌ ๋ฐ ๊ธฐ๋ฅ๋ณ Step ๋ถ๋ฆฌ๋ก ์ฐ์ ์์ ํ๋ฆฝ
- ํ๋์ Open API์ด์ง๋ง ๊ธฐ๋ฅ๋ณ๋ก ์ฌ์ฉํด์ผ ํ๋ API๊ฐ ๋ฌ๋ผโจ ์ฌ์ฌ์ฉ ๊ฐ๋ฅํ EndPoint ๋ฐ ๋คํธ์ํฌ ๊ตฌ์กฐ ์ค๊ณ๋ฅผ ์ํด ๋ ธ๋ ฅ
- ๋ฏธ์ํ๋ ๊ธฐ๋ฅ์ ๊ตฌํ์ ์ํด ๋ง์ ํ์ต ์งํ
- Compositional CollectionView + Diffable Data Source
- URLSession
- Async/Await
- ์ ์ง๋ณด์๋ฅผ ์ํด ์ต๋ํ์ ํ์ผ, ๊ฐ์ฒด, ๋ฉ์๋ ๋ถ๋ฆฌ ๋ ธ๋ ฅ
- Notion์ ํตํด ๋ฌธ์ํ๋ฅผ ์งํํ์์ง๋ง, ์ ๋ฆฌ ๋ฏธํก
- ๋ฏธํกํ ๋ด์ฉ์ ๋ณด์ ์์
- Open API ๋ฐ์ดํฐ ํ์์ ๊ณ ๋ คํ์ฌ ๋ชจ๋ธ ํ์ ์ ๊ตฌํ
- ๊ตฌํํ ๋ชจ๋ธ ํ์
์ผ๋ก Parsingํ ์ ์๋์ง์ ๋ํ
๋จ์ ํ ์คํธ(Unit Test)
๋ฅผ ์งํ
- ๋คํธ์ํฌ ํต์ ์ ๋ด๋นํ ํ์ ์ ์ค๊ณํ๊ณ ๊ตฌํ
- Open API ๋ฐ์ดํฐ ํ์์ ๊ณ ๋ คํ์ฌ ์๋ฒ์ ์ค์ ๋ก ๋ฐ์ดํฐ๋ฅผ ์ฃผ๊ณ ๋ฐ๋๋ก ๊ตฌํ
- ๐๏ธ keyword: URLSession, Network, Decode, JSON Parsing
- STEP 2์์ ๊ตฌํํ ๋คํธ์ํน ๊ธฐ๋ฅ์ ํตํด ์ค์ ๋ก ์ฑ ๋ชฉ๋ก์ API ์๋ฒ์ ์์ฒญํ์ฌ ๋ถ๋ฌ์ค๊ธฐ
- ๋ฆฌ์คํธ๋ฅผ ์๋๋ก ์ก์๋์ด์ ๋์ผ๋ฉด ๋ฆฌ์คํธ๋ฅผ
์๋ก๊ณ ์นจ
ํ๊ธฐ - ์ฒ์ ๋ชฉ๋ก์ ๋ถ๋ฌ์ฌ ๋, ์ฌ์ฉ์์๊ฒ ๋น ํ๋ฉด๋ง ๋ณด์ฌ์ฃผ๋ ๋์
๋ก๋ฉ ์ค
์์ ์ ์ ์๊ฒ ํ๊ธฐ ์ข์ฐ ์คํฌ๋กค
์ด ๊ฐ๋ฅํ layout ๊ตฌํ- ๋ฆฌ์คํธ์ ํ๊ธฐํ ์ ๋ณด
- ์ธ๊ธฐ ๋์(์ด๋ฏธ์ง, ์๋ช ์ ์) - ์ต๋ 10๊ฐ๊น์ง ์ถ๋ ฅ
- ์ฅ๋ฅด
- ๋ฉ์ธ ๋ชฉ๋ก ํ๋ฉด ํ๋จ์ 'ํ' ํ๋ฉด๊ณผ '์ฆ๊ฒจ์ฐพ๊ธฐ' ํ๋ฉด์ผ๋ก ๊ฐ ์ ์๋
ํด๋ฐ
๊ตฌํ - ๐๏ธ keyword: UIRefreshControl, UIActivityIndicatorView, Compositional Layout, UIToolbar
- ๋ฉ์ธ ๋ชฉ๋ก ํ๋ฉด์์ ์ฑ ์ ์ด๋ฏธ์ง๋ฅผ ๋๋ฅด๋ฉด ๋์ ์ธ๋ถํ๋ฉด์ผ๋ก ์ด๋ํ๋๋ก ๊ตฌํ
- ์ฑ
์ ๋ํ ์ด๋ฏธ์ง๋ฅผ ๋
ธ์ถ
- ์ด๋ฏธ์ง๋ฅผ ํญํ๋ฉด ์ด๋ฏธ์ง๋ฅผ ํ๋ํด์ ํ์ธ ๊ฐ๋ฅ
- ๋ฏธ๋ฆฌ๋ณด๊ธฐ ๋ฒํผ ์ ๊ณต
- ํญํ๋ฉด
๋ฏธ๋ฆฌ๋ณด๊ธฐ
๋ฅผ ํ์ ์ผ๋ก ์ ๊ณต
- ํญํ๋ฉด
- ๋์์ ์ค๊ฑฐ๋ฆฌ๋ฅผ ์ ๊ณตํฉ๋๋ค
- ์ต๋ 100์๋ฅผ ๋
ธ์ถํฉ๋๋ค. ๊ทธ ์ด์์ ๊ธ์๋
๋๋ณด๊ธฐ ๋ฒํผ
์ ํตํด์ ์ ๊ณตํฉ๋๋ค. ๋๋ณด๊ธฐ ๋ฒํผ
์ ๋๋ฅด๋ฉด ์ ๋ฌธ์ด ๋ ธ์ถ๋ฉ๋๋ค.
- ์ต๋ 100์๋ฅผ ๋
ธ์ถํฉ๋๋ค. ๊ทธ ์ด์์ ๊ธ์๋
- ์ ์ ์๊ฐ๋ฅผ ์ ๊ณตํฉ๋๋ค.
- ์ต๋ 100์๋ฅผ ๋
ธ์ถํฉ๋๋ค. ๊ทธ ์ด์์ ๊ธ์๋
๋๋ณด๊ธฐ ๋ฒํผ
์ ํตํด์ ์ ๊ณตํฉ๋๋ค. ๋๋ณด๊ธฐ ๋ฒํผ
์ ๋๋ฅด๋ฉด ์ ๋ฌธ์ด ๋ ธ์ถ๋ฉ๋๋ค.
- ์ต๋ 100์๋ฅผ ๋
ธ์ถํฉ๋๋ค. ๊ทธ ์ด์์ ๊ธ์๋
- ํด๋น ์ฑ ์ ๋ํ ๋ฉ๋ชจ๋ฅผ ์ฌ์ฉ์๊ฐ ์ง์ ์ถ๊ฐํ ์ ์์ต๋๋ค.
- ๐๏ธ keyword: Presentation, gesture, UILabel
- ๋ฉ์ธ ๋ชฉ๋ก ํ๋ฉด์์ ์ฅ๋ฅด ๋ฒํผ์ ๋๋ฅด๋ฉด ์ฅ๋ฅด ์ธ๋ถํ๋ฉด์ผ๋ก ์ด๋ํ๋๋ก ๊ตฌํ
๊ฒ์
๊ธฐ๋ฅ์ ์ ๊ณตํฉ๋๋ค- ๊ฒ์๊ฐ๋ฅ ํค์๋: ์ฑ ์ ๋ชฉ, ์ ์๋ช
- ํ ํ์ด์ง์ ์ต์
9๊ฑด
์ด์์ ๋์ ๊ฒ์๊ฒฐ๊ณผ๋ฅผ ๋ ธ์ถํฉ๋๋ค.- ์ํ๋ก ํ์ด์ง ์คํฌ๋กค์ด ๊ฐ๋ฅํฉ๋๋ค. ์ตํ๋จ์ผ๋ก ์คํฌ๋กคํ ๊ฒฝ์ฐ
์ถ๊ฐ์ ์ธ
๊ฒ์๊ฒฐ๊ณผ๋ฅผ ๋ถ๋ฌ์ต๋๋ค. - ์ฑ ์ฐ์ธก ์๋จ์๋ ์ฆ๊ฒจ์ฐพ๊ธฐ ์ฌ๋ถ๋ฅผ ํ์ธํ ์ ์๋ ์ด๋ฏธ์ง๋ฅผ ํ์ํฉ๋๋ค.
- ์ํ๋ก ํ์ด์ง ์คํฌ๋กค์ด ๊ฐ๋ฅํฉ๋๋ค. ์ตํ๋จ์ผ๋ก ์คํฌ๋กคํ ๊ฒฝ์ฐ
- ๊ฐ ์ฑ
์ ๋๋ฅด๋ฉด STEP 4์
๊ฐ๋ณ ๋์ ์์ธ ํ๋ฉด
์ผ๋ก ๊ฐ ์ ์๋๋ก ํฉ๋๋ค.
- ๐๏ธ keyword: SearchController, lazy loading
- ์ฆ๊ฒจ์ฐพ๊ธฐ ํ์ด์ง๋ ๊ฒ์ ๊ฒฐ๊ณผ ํ๋ฉด๊ณผ
๋์ผํ
ํ๋ฉด์ ์ฌ์ฉํฉ๋๋ค. ๋ค๋ง ์ฆ๊ฒจ์ฐพ๊ธฐ๋ ๋์๋ค๋ง ํ์ํฉ๋๋ค. - STEP 6์ ๊ฐ ์ฑ
์ ์ฐ์ธก ์๋จ์๋
ํํธ
๊ฐ ํ์๋ฉ๋๋ค.- ํํธ๋ฅผ ๋๋ฅด๋ฉด ๋นจ๊ฐ์์ผ๋ก ํํธ๊ฐ ๋ณํ๊ณ ,
์ฆ๊ฒจ์ฐพ๊ธฐ ๋ฆฌ์คํธ
์ ๋ค์ด๊ฐ๊ฒ ๋ฉ๋๋ค. - ํํธ๋ฅผ ๋๋ฅธ ์ฑ
๋ค์ ๋ชฉ๋ก์
๋๋ฐ์ด์ค์ ์ ์ฅ
ํ์ฌ ์ฑ์ ์ข ๋ฃํ๋ค ์ผ๋๋ผ๋ ์ ์ง๋๋๋ก ํฉ๋๋ค.
- ํํธ๋ฅผ ๋๋ฅด๋ฉด ๋นจ๊ฐ์์ผ๋ก ํํธ๊ฐ ๋ณํ๊ณ ,
- ๐๏ธ keyword: UserDefaults, reuseCustomCell, viewLifeCycle
๊ณ ๋ฏผํ ์ : URL ์์๋ฅผ ์ด๋ป๊ฒ ๋ถ๋ฆฌํ๋ ๊ฒ์ด ์ข์๊น?
์ฐธ๊ณ ์๋ฃ : Apple ๊ณต์๋ฌธ์(URLComponents)
ํด๊ฒฐ : ๊ธฐ์กด์๋ firstComponent, secondComponent ๋ฑ์ผ๋ก ๋๋์ด ๊ตฌ์ฑํ์๊ธฐ์ Component์ ์ซ์๊ฐ ์ผ์ ํ ์ํฉ์์๋ ์ ์ฉํ์์ง๋ง, ์ซ์๊ฐ ๋ค๋ฅธ ์ํฉ์์๋ Component๋ฅผ ์ ๊ฑฐํ๊ฑฐ๋ ์ถ๊ฐํด์ผ ํ๋ ๋ฑ ์ ์ฐํ๊ฒ ์ฌ์ฉํ๊ธฐ๊ฐ ์ด๋ ค์ ๋ค. ๊ณต์๋ฌธ์์ ๋ด์ฉ์ ๋ฐ๋ผ scheme, host, path, queryItems๋ฅผ ์ฌ์ฉํ์ฌ ๋ฌธ์ ๋ฅผ ํด๊ฒฐํ ์ ์์๋ค.
- scheme
- ๋ฆฌ์์ค๋ฅผ ์ ๊ทผํ๋๋ฐ ์ฌ์ฉํ ํ๋กํ ์ฝ์ ์๋ณ
- ์คํค๋ง ๋ค์์๋ :// ๋ฅผ ๋ถ์ฌ์ฃผ์ด์ผ ํ๋ค.
- host
- ๋ฆฌ์์ค๋ฅผ ๋ณด์ ํ ํธ์คํธ๋ฅผ ์๋ณ
- ํธ์คํธ ์ด๋ฆ ๋ค์์ผ๋ก port number๊ฐ ์ฌ ์๋ ์๋ค.
- ํฌํธ ๋ฒํธ๊ฐ ์๋ ๊ฒฝ์ฐ ํธ์คํธ ์ด๋ฆ ๋ค์์ผ๋ก :๊ณผ ํจ๊ป ํฌํธ ๋ฒํธ๋ฅผ ๋ถ์ฌ ์ฃผ์ด์ผ ํ๋ค.
- path
- ์ ๊ทผํ๋ ค๋ ํน์ ๋ฆฌ์์ค๋ฅผ ์๋ณ
- ๊ฒฝ๋ก ์ด๋ฆ์ / ๋ก ์์ํ๋ค.
- query
- ํน์ ๋ชฉ์ ์ ์ฌ์ฉํ ์ ๋ณด์ ๋ํ ๋ฌธ์์ด์ ์ ๊ณต
- ์ฟผ๋ฆฌ ๋ฌธ์์ด์ด ์ง์ ๋๋ฉด ์์ ? ๊ฐ ์ค๋ฉฐ, ๊ฐ ์ฟผ๋ฆฌ๋ &๋ก ์ฐ๊ฒฐ๋๋ค.
๊ณ ๋ฏผํ ์ : ์ง๊ธ๊น์ง TableView์ ๊ธฐ๋ณธ CollectionView๋ง ์จ๋ดค๋๋ฐ, ์ ๋ ๊ฒ ๋ค์ฑ๋ก์ด ๋ ์ด์์์ ์ด๋ป๊ฒ ํ๋ฉด ๊ตฌ์ฑํ ์ ์์๊น? ์ฐพ์๋ณด๋ Compositional์ด๋ผ๋ ๊ฒ๋ ์๊ณ , diffable์ด๋ผ๋๊ฒ ์๋๋ฐ ์ด๊ฑด ๋ฌด์์ผ๊น?
์ฐธ๊ณ ์๋ฃ : - Apple ๊ณต์๋ฌธ์(UICollectionViewCompositionalLayout) - Apple ๊ณต์๋ฌธ์(UICollectionViewDiffableDataSource) - Apple ๊ณต์๋ฌธ์(UICollectionLayoutSectionOrthogonalScrollingBehavior) - Apple ๊ณต์๋ฌธ์(Implementing Modern Collection Views)
ํด๊ฒฐ : Compositional Layout์ ๊ธฐ์กด์ CollectionView๋ก ๋ค์ํ ๋ ์ด์์์ ๋ง๋ค ๋ ์ด๋ ค์ธ ์ ์๋ ๋ถ๋ถ์ ํด๊ฒฐํ๊ธฐ ์ํ ์ ํ์ด๋ผ๊ณ ์๊ฐํ๋ค. ๊ฐ ์์๋ฅผ item, group, section์ผ๋ก ๋ง๋ค์ด ์ชผ๊ฐ๊ณ , ๊ฐ section์ ๋ ๋ค๋ฅธ ๋ ์ด์์์ ๊ฐ์ง ์ ์๊ธฐ ๋๋ฌธ์ด๋ค. DiffableDataSource๋ WWDC์ ๋ฐ๋ฅด๋ฉด ๊ธฐ์กด์๋ ๋ฐ์ดํฐ๋ฅผ ๋ฐ์ํจ์ ์์ด IndexPath๋ ์ค์ํ๊ณ , ReloadData๋ฅผ ํด์ผ ํ๋ ์์๊ฐ ์๋๋ฐ, Snapshot์ ํตํด ์ด๋ฅผ ํด๊ฒฐํ๋ค๊ณ ํ๋ค. Snapshot์ ๋น๊ตํจ์ผ๋ก์จ ์ด๋ค ๋ถ๋ถ์ด ๋ฌ๋ผ์ก๋์ง ํ์ ํ์ฌ View์ ๋ฐ์์ ํด์ฃผ๋ ๊ฒ์ด๋ค. ๋๋ถ์ IndexPath ์ค๋ฅ๋ฉฐ ReloadData์ ํ์ ์์ด snapshot.apply() ๋ก ํด๊ฒฐํ ์ ์๊ฒ ๋์๋ค.
๋ฉ์ธํ๋ฉด์์ ๋ฒ ์คํธ ์ ๋ฌ ๋ชฉ๋ก์ ๊ฐ๋ก๋ก ์คํฌ๋กค์ ํด์ผ ํ๊ณ , ์ฅ๋ฅด๋ณ ์ด๋ฆ ๋ฆฌ์คํธ๋ ์ธ๋ก๋ก ์คํฌ๋กค์ ํด์ผ ํ๊ธฐ์ ์์์ ์ธ๊ธํ ๊ฐ section๋ณ ๋ณ๋์ ๋ ์ด์์์ด ํ์ํ๋ค. ์ด๋ฅผ ์ํด OrthogonalScrollingBehavior๋ฅผ ํตํด ๋ฒ ์คํธ ์ ๋ฌ ์น์ ์ ๊ฐ๋ก๋ก ์คํฌ๋กค๋ง ํ๊ฒ ๋ง๋ค์ด์ฃผ์ด ํด๊ฒฐํ ์ ์์๋ค.
๊ณ ๋ฏผํ ์ : CollectionView๊ฐ ๋ก๋ฉ๋ ๋ ๋ฐ์ดํฐ๋ฅผ ๋ฃ๋ ๊ณผ์ ์์ ๋น์ฉ ๋ฌธ์ ๊ฐ ๋ฐ์ํ๋๋ฐ ์ด๋ค ๊ฒ์ด ๋ฌธ์ ์ผ๊น?
๋ฌธ์ ๋ก๊ทธ: Diffable data source detected an attempt to insert or append 10 item identifiers that already exist in the snapshot.
ํด๊ฒฐ : ๊ณต์๋ฌธ์๋ฅผ ํตํด Diffable Data Source, snapshot์ ๋ณด๊ณ , WWDC๋ฅผ ๋ค์ ๋ด๋ ๋ฌธ์ ๊ฐ ๋ณด์ด์ง ์์๋ค. ๊ฐ์ด ๊ณต๋ถํ๋ ๋๋ฃ์๊ฒ ๋ฌผ์ด๋ณด๋ ์ง๊ธ๊น์ง snapshot์ ๋ํด ์๋ชป ์ดํดํ๊ณ ์์์์ ๊นจ๋ฌ์๋ค. snapshot์ ์ฒ์ ๋ง๋ค ๋์๋ง ์๋ก ๋ง๋ค์ด์ฃผ๊ณ , ์ดํ ์ค๋ ์ท๋ถํฐ๋ ๊ฐ์ ์ค๋ ์ท์ ์์ดํ ๋ง ์๋ก ๋ฃ์ด์ฃผ๋ฉด ๋๋ ๊ฒ์ด๋ผ๊ณ ์๊ฐํ์๋ค. ํ์ง๋ง snapshot โ๋ดโ์ ์์ดํ ๋น๊ต๊ฐ ์๋ snapshot โ๊ฐโ์ ๋น๊ต์ด๊ธฐ ๋๋ฌธ์ ์๋ก์ด ์์ดํ ์ด ๋ด๊ธด snapshot์ ๋ง๋ค์ด์ค์ผ ํ๋ ๊ฒ์ด๋ค.
๋๋ฌธ์ Diffable Data Source๋ ์ด๋ฏธ ์ค๋ ์ท์ ์์ดํ ์ด ๋ค์ด์๋๋ฐ ์ ๋ ๊ทธ ์์ดํ ์ ๋ฃ์ผ๋ ค๊ณ ํ๋๋ฉฐ ์ผ๋จ ๋ค์ด๋ ์ฃผ๋๋ฐ ์ด๊ฑด expensive cost๋ค ํ๊ณ ์๋ ค์ค ๊ฒ์ด์๋ค. ์๋ก์ด snapshot์ ๋ง๋ค์ด์ applyํด์ฃผ์ ๋ฌธ์ ๋ฅผ ํด๊ฒฐํ ์ ์์๋ค.
๊ณ ๋ฏผํ ์ : ์ฑ ์์ธ์ ๋ณด View์์ ๋ฉ๋ชจ๋ฅผ ์ํ TextView๋ฅผ ๋ง๋ค์๋๋ฐ, ์ฌ๊ธฐ์ TextField์ฒ๋ผ placeholder๋ฅผ ๋ฃ์ด์ฃผ๊ณ ์ถ๋ค. ๋ฉ๋ชจ๊ฐ ์๋ค๋ฉด placeholder๋ฅผ ๋ณด์ฌ์ฃผ๊ณ , ๋ฉ๋ชจ๋ฅผ ์์ํ ๋ ์ง์ฐ๋ ๋ฐฉ์์ผ๋ก ํ๊ณ ์ ํ๋ค. ์ฐพ์๋ณด๋ Compositional์ด๋ผ๋ ๊ฒ๋ ์๊ณ , diffable์ด๋ผ๋๊ฒ ์๋๋ฐ ์ด๊ฑด ๋ฌด์์ผ๊น?
์ฐธ๊ณ ์๋ฃ : - ๋ธ๋ก๊ทธ(๊น์ข ๊ถ์ iOS ์ฑ ๊ฐ๋ฐ ์์๊ฐ๊ธฐ - TextView placeholder ์ ์ฉ ๋ฐฉ๋ฒ)
ํด๊ฒฐ : TextView Delegate๋ฅผ ํ์ฉํ์ฌ TextView๊ฐ ํธ์ง์ค์ธ์ง ์๋์ง๋ฅผ ๋ฐํ์ผ๋ก textView.text๋ฅผ ์ค์ ํ๋ ๋ฐฉ์์ผ๋ก ํด๊ฒฐํ ์ ์์๋ค. ๊ฐ๋ น ํธ์ง์ค์ธ๋ฐ ํ์ฌ text๊ฐ ์ค์ ํด๋์ placeholder text์ ๊ฐ๋ค๋ฉด text๋ฅผ nil๋ก ๋ง๋ค๊ณ ๊ธ์ ์์ .black์ผ๋ก ๋ฐ๊พธ๊ณ , ํธ์ง์ด ๋๋ฌ๋๋ฐ text๊ฐ ์๋ฌด๊ฒ๋ ์๋ค๋ฉด placeholder text๋ก ๋ค์ ๋๋ ค๋๋ ๊ฒ์ด๋ค.
๊ณ ๋ฏผํ ์ : ์ฑ ์์ธ์ ๋ณด View์์ ๋ฉ๋ชจ๋ฅผ ํ๊ธฐ ์ํด TextView๋ฅผ ํฐ์นํ๋ฉด ํค๋ณด๋๊ฐ ์ฌ๋ผ์ค๋๋ฐ, ํค๋ณด๋์ ๋ง์ถฐ ๋ทฐ๊ฐ ์์ง์ด๋ ๊ฒ์ด ์๋๋ผ ๊ฐ๋ ค๋ฒ๋ฆฌ๋ ๋ฌธ์ ๊ฐ ๋ฐ์ํด์ ๋ทฐ์ ์์น๋ฅผ ์กฐ์ ํ ํ์๊ฐ ์์๋ค.
์ฐธ๊ณ ์๋ฃ : - ๋ธ๋ก๊ทธ(๊น์ข ๊ถ์ iOS ์ฑ ๊ฐ๋ฐ ์์๊ฐ๊ธฐ - TextView placeholder ์ ์ฉ ๋ฐฉ๋ฒ)
ํด๊ฒฐ : Notification Center Observer๋ฅผ ํ์ฉํ์ฌ ํด๊ฒฐํ ์ ์์๋ค. keyboardWillShowNotification, keyboardWillHideNotification์ผ๋ก ์ต์ ๋ฒ๋ฅผ ์ถ๊ฐํ๊ณ , selector ๋ฉ์๋์์ ํค๋ณด๋์ height์ tabBar์ height ๋งํผ View์ ์์น๋ฅผ ์ฎ๊ฒจ์ฃผ๋ ๋ฐฉ์์ผ๋ก ํ๋ฉด์ ๊ตฌ์ฑํ๊ฒ ๋์๋ค.
ํ์ง๋ง ์ฒ์์๋ ์ ์๋ํ์์ผ๋ ๋์ค์ ๋ค์ ํ ์คํธ ํ์ ๋, ํค๋ณด๋ ์ํ์ ํฐ์นํ๋ฉด ํค๋ณด๋ ์์ชฝ์ผ๋ก ์ฎ๊ฒจ์ง ๋งํผ์ ๋น ๊ณต๊ฐ์ด ๋ ์๊ธฐ๋ ๋ฌธ์ ๊ฐ ๋ฐ์ํ๋ค. ์ค๊ธฐ๊ธฐ์์๋ ๊ด์ฐฎ์์ผ๋ ์๋ฎฌ๋ ์ดํฐ์์๋ง ์ค๋ณต์ผ๋ก ์ฒ๋ฆฌ๊ฐ ๋๊ณ , ์ฝ๋์์๋ ๋ ๋ฒ ์๋ํ ๋งํ ๋ถ๋ถ์ด ๋ณด์ด์ง ์์ ๋ํญ์ ๊ฒช์์ผ๋ view์ y์์น๋ฅผ ์ฒดํฌํ๋ ์กฐ๊ฑด๋ฌธ์ ๋ฌ์์ค์ผ๋ก์จ ํด๊ฒฐํ ์ ์์๋ค. ๋๋ถ์ด ์กฐ๊ฑด๋ฌธ์ ํตํด ํด๊ฒฐํ๋ฉด์ ๊ฐ selector ๋ฉ์๋์์ ๊ฐ๊ฐ ๋์ด๋ฅผ ๊ตฌํ๊ณ ๋นผ๊ณ ๋ํด์ฃผ๋ ์์ ๋์ hide์์๋ view์ ์์น๋ฅผ ์๋๋๋ก ๋๋ฆฌ๋ ์์ผ๋ก ์ฝ๋๋ ๊ฐ๊ฒฐํ๊ฒ ์ฒ๋ฆฌํ ์ ์์๋ค.
๊ณ ๋ฏผํ ์ : UILabel์ ์ด๋ป๊ฒ ๋๋ณด๊ธฐ๋ฅผ ๊ตฌํํ ์ ์์๊น? ํ๋ ์๊ฐ์ผ๋ก ๋ฒํผ์ ๋ง๋ค์ด numberOfLines ๊ฐ์ ๋ฐ๊ฟ์ฃผ๋ ๊ฒ์ ์๊ฐํ์๋ค. ํ์ง๋ง ์ด๋ ๊ธ์์๋ก ์ฒดํฌํ๋ ๊ฒ์ด ์๋๋ผ ์ค ์๋ก ๊ตฌ๋ถ์ ํ๋ ๋ฌธ์ ๊ฐ ์์๊ณ , ๋ฒํผ์ ๋ง์ง๋ง ๊ธ์ ์์ ์ ๋์ ์ผ๋ก ์์นํ๊ฒ ํ ์ ์์ด Label์ ์๋์ชฝ์ ๋ ์ด์์์ ์ฃผ๊ฒ ๋์๋๋ฐ ๋ฒํผ์ ๋๋ ์ ๋ hide๋ฅผ ์ํค๋ฉด ํด๋น ์์น๊ฐ ๋ถ ๋จ๋ ๋ฌธ์ ๋ ์์๋ค.
์ฐธ๊ณ ์๋ฃ : - stackoverflow(Add "...Read More" to the end of UILabel)
ํด๊ฒฐ : ์๋ง์ ๋ต๋ณ์ด ์์์ผ๋ ๋ณต์กํ๊ณ ์ดํด๊ฐ ์๊ฐ๋ ์ฝ๋๊ฐ ๋ง์ด ์์๋ค. ๊ทธ ์ค UILabel์ ๋ฐ๋ก ์ปค์คํ ํ์ฌ ์ ํด์ง ๊ธ์ ์๋งํผ ์ธ๋ฑ์ค๋ก ์๋ผ์ ๋ณด์ฌ์ฃผ๊ฑฐ๋ ์ ๋ฌธ์ ๋ณด์ฌ์ฃผ๋ ๋ฐฉ์์ ์ฌ์ฉํ ์ ์์๋ค.
๊ณ ๋ฏผํ ์ : ๋ฏธ๋ฆฌ๋ณด๊ธฐ ์ด๋ฏธ์ง๋ฅผ ์ด๋ป๊ฒ ๋ณด์ฌ์ฃผ๋ ๊ฒ์ด ์ข์๊น?
์ฐธ๊ณ ์๋ฃ : - Apple Human Interface Guidelines(Materials)
ํด๊ฒฐ : ๊ธฐ์กด์๋ ์ด๋ฏธ์ง์ ์ด์ , ๋ซ๊ธฐ, ๋ค์ 3๊ฐ์ ๋ฒํผ์ด ์๋ ๋ทฐ๋ฅผ ์๊ฒ ํ์ ์ฒ๋ผ ๋์์ ๋ฏธ๋ฆฌ๋ณด๊ธฐ๋ฅผ ํ ์ ์๊ฒ ํ์๋ค. ํ์ง๋ง ํ๋ก์ ํธ ํผ๋๋ฐฑ์ผ๋ก HIG์ ๋ด์ฉ๊ณผ ์ฌ์ฉ์ฑ์ ๋ํ ๊ฒ์ด ๋ค์ด์๋ค.
๋จผ์ , ๊ธฐ์กด์ ๋ฐฉ์์ ์ฌ์ฉํ๋ฉด ์์ ๋ทฐ๋ฅผ ๋์ฐ๊ธฐ๋ ํ์ง๋ง ๋ค์ ์๋ ๋ทฐ๋ ํฐ์น๊ฐ ๊ฐ๋ฅํ ์ด์ํ ๋ฐฉ์์ผ๋ก ๊ตฌ๋๋๊ณ ์์๋ค. ๊ทธ๋ ๋ค๋ฉด ์ด๊ฒ์ ๋ท๋ถ๋ถ ํฐ์น๋ฅผ ๋ง์ ๊ฒ์ธ๊ฐ, ์๋๋ฉด ์ ์ฒดํ๋ฉด์ผ๋ก ๋ง๋ค์ด์ผ ํ๋๊ฐ ๊ณ ๋ฏผ์ ๋จผ์ ํ๋ค. ์์ ํ์ ์ผ๋ก ๋์ด ์ด์ ๋ ์ด์ฉ์๊ฐ ์ด ์ฑ ์ ๋ฏธ๋ฆฌ๋ณด๊ธฐ๋ฅผ ๋ณด๊ณ ์๋ค๋ ๋งฅ๋ฝ ์ ์ง๋ฟ๋ง ์๋๋ผ ์ ์ฒด ๋ด์ฉ ๋ณด๊ธฐ๊ฐ ์๋ ๋ฏธ๋ฆฌ๋ณด๊ธฐ๋ผ ์ ๊น ํ์ด๋ณด๋ ์ฉ๋๋ก ์๊ฐํด์ ํฐ ์ฐฝ์ผ๋ก ๋ณด์ฌ์ค ํ์๊ฐ ์์ ๊ฒ ๊ฐ๋ค๋ ์๊ฐ์ด์๋ค. ํ์ง๋ง ํผ๋๋ฐฑ์ ๋ฐ์ ์ดํ ์ด๋ฌํ ๊ธฐ๋ฅ์ ์ ๊ณตํ๋ ๋ช ์ฑ์ ์ดํด๋ณด๊ฒ ๋์๊ณ ์ ์ฒดํ๋ฉด์ ํตํด ํฌ๊ฒ ๋ณด์ฌ์ค์ ์ ์ ์์๋ค. ๊ทธ๋ ๋ค๋ฉด ์ ์ฒดํ๋ฉด์ผ๋ก ํ๋ค๋ฉด, ๋ ์ด์์์ ์ด๋ป๊ฒ ๊ตฌ์ฑํ๋ ๊ฒ์ด ์ข์๊น์ ๋ํ ๊ณ ๋ฏผ์ ํ๋ ์ค, ํผ๋๋ฐฑ์ค ํ๋์๋ HIG๊ฐ ๋ ์ฌ๋๋ค.
HIG Materials์ ๋ฐ๋ฅด๋ฉด โTranslucency can help people retain their context by providing a visible reminder of the content thatโs in the backgroundโ โ๋ฐํฌ๋ช ๋๋ ๋ฐฐ๊ฒฝ์ ์๋ ์ฝํ ์ธ ๋ฅผ ์๊ฐ์ ์ผ๋ก ์๊ธฐ์์ผ ์ฌ๋๋ค์ด ๋งฅ๋ฝ์ ์ ์งํ๋ ๋ฐ ๋์์ด ๋ ์ ์์ต๋๋คโ
๋ผ๋ ๋ฉํธ๊ฐ ์์๋ค. โ์, ๊ทธ๋ฌ๋ฉด ๋ทฐ์ ๋ฐฐ๊ฒฝ์ ๋ฐํฌ๋ช ๋๋ฅผ ์ค์ ์ด์ ์ ์ด๋ค ์ฐฝ์์ ๋์ด์จ๊ฑด์ง ์ ์ ์๊ฒ ํด์ฃผ๋ฉด ๋๊ฒ ๋คโํ๋ ์๊ฐ์ ํ๊ฒ ๋์๊ณ , HIG์์ ์๋ ค์ค UIBlurEffect๋ฅผ ์ ์ฉํด๋ณด๊ฒ ๋์๋ค.
๊ณ ๋ฏผํ ์ : ๋ฒํผ์ ํตํด ์ด๋ฏธ์ง๋ฅผ ๋๊ธฐ๋ ๊ฒ์ด ์๋๋ผ ์ฌ์ง์ฑ์์ ํ๋ฏ์ด ์ค์์ดํ ์ ์ค์ฒ๋ก ์ด๋ฏธ์ง๋ฅผ ๋๊ธฐ๊ณ ์ถ์๋ฐ ์ ์ค์ฒ๋ ์ด๋ป๊ฒ ์ฌ์ฉํด์ผ ํ๋ ๊ฒ์ผ๊น?
์ฐธ๊ณ ์๋ฃ : - Apple ๊ณต์๋ฌธ์(UIGestureRecognizer)
ํด๊ฒฐ : ์ด์ ์ ํ์ตํ๋ touch Event, Responder Chain์ด ๋ ์ฌ๋ผ UIGestureRecognizer๋ฅผ ์ฐพ์๋ณด์๋ค. UIGestureRecognizer์ ์๋ธ ํด๋์ค๋ ์ค์์ ์ค์์ดํ ๋์์ ์ฌ์ฉํ๊ธฐ์ ์ ํฉํ ๊ฒ์ ์ด๋ฆ ๊ทธ๋๋ก ๋ํ๋ ์๋ UISwipeGestureRecognizer๋ผ๊ณ ์๊ฐํ์๊ณ ์ด์ ๋ํด ํ์ตํด๋ณด์๋ค. ๊ณต์๋ฌธ์์ ๋ฐ๋ฅด๋ฉด, GestureRecognizer๋ ํน์ view ๋ฐ ๋ชจ๋ subview์ ๋ํด hit test๋ฅผ ๊ฑฐ์น touch์์ ์๋ํ๋ค๊ณ ํ๋ค. ๋ฐ๋ผ์ ํด๋น view์ ์ฐ๊ฒฐ์ ํด์ผ ํ๊ณ , ๊ทธ๋ฌ๊ธฐ ์ํด์๋ UIView์ ๋ฉ์๋์ธ addGestureRecognizer(_:)๋ฅผ ํธ์ถํด์ผ ํ๋ค๊ณ ํ๋ค. ๋ํ ์ด๋ view์ responder chain์ ์ฐธ์ฌํ์ง ์๋๋ค๊ณ ํ๋ค.
์ Gesture Recognizer๋ ํฌํจ๋์ง ์์๊น? ๊ณต์๋ฌธ์์ ์๋์ ๊ฐ์ ๋ด์ฉ์ด ์๋ค. Gesture recognizers๋ view๋ณด๋ค ๋จผ์ ํฐ์น ๋ฐ ๋๋ฅด๊ธฐ ์ด๋ฒคํธ๋ฅผ ์์ ํ๋ค. view์ Gesture recognizers๊ฐ ์ผ๋ จ์ ํฐ์น๋ฅผ ์ธ์ํ์ง ๋ชปํ๋ฉด UIKit์ด ํฐ์น๋ฅผ View๋ก ๋ณด๋ธ๋ค. view๊ฐ ํฐ์น๋ฅผ ์ฒ๋ฆฌํ์ง ์์ผ๋ฉด UIKit์ Responder chain ์๋ก ํฐ์น๋ฅผ ์ ๋ฌํ๋ค. ์ฆ Gesture recognizer๋ view๋ณด๋ค ์์ ํฐ์น ์ด๋ฒคํธ๋ฅผ ์์ ํ๊ธฐ ๋๋ฌธ์ Responder Chain์ ํฌํจ๋์ง ์๋ ๊ฒ์ด๊ณ , ์ฌ๊ธฐ์ ํฐ์น ์ด๋ฒคํธ๋ฅผ ์ฒ๋ฆฌํ์ง ๋ชปํ๋ฉด view๋ก ์ ๋ฌ, view๋ ์๋๋ฉด ์์ ๊ทธ๋ฆผ๊ณผ ๊ฐ์ด chain์ ๋ฐ๋ผ ์ฒ๋ฆฌํ ๊ฐ์ฒด๋ฅผ ์ฐพ๊ฒ ๋๋ ๊ฒ์ด๋ค.
๊ทธ๋ฌ๋ฉด, SwipeGestureRecognizer๋ ๋ฌด์์ผ๊น? ํ๋ ์ด์์ ๋ฐฉํฅ์ผ๋ก ๋ฐ๊ธฐ ์ ์ค์ฒ๋ฅผ ํด์ํ๋ ๋ถ์ฐ์ ์ ์ค์ฒ ์ธ์๊ธฐ๋ก ์ฌ์ฉ์๊ฐ ํ์ฉ ๊ฐ๋ฅํ ๋ฐฉํฅ์ผ๋ก ์ง์ ๋ ํฐ์น๋ฅผ ์ด๋ํ ๋ ์ค์์ดํ๋ฅผ ์ธ์ํ๋ค. ์ค์์ดํ๋ ๋ณ๊ฐ์ ์ ์ค์ฒ์ด๋ฏ๋ก ์์คํ ์ ์ ์ค์ฒ๋น ํ ๋ฒ๋ง ์ฐ๊ฒฐ๋ ์์ ๋ฉ์์ง๋ฅผ ๋ณด๋ธ๋ค. UISwipeGestureRecognizer ํด๋์ค๋ฅผ ์ฌ์ฉํ์ฌ ์ค์์ดํ ์ ์ค์ฒ๋ฅผ ๊ฐ์งํ๊ณ view์ addGestureRecognizer(_:) ๋ฉ์๋๋ฅผ ํธ์ถํ๋ค. ์ด๋ ํ๋ฉด์์ ๊ฐ๋ก ๋๋ ์ธ๋ก๋ก ์ฌ๋์ ์๊ฐ๋ฝ ๋์์ ์ถ์ ํ๋ค. ์ด ์ ์ค์ฒ๋ ๋ณ๊ฐ์ด๋ฏ๋ก ๋์ ๋ฉ์๋๋ ์ ์ค์ฒ๊ฐ ์ฑ๊ณต์ ์ผ๋ก ์ข ๋ฃ๋ ํ์๋ง ํธ์ถ๋๊ณ ๊ฒฐ๊ณผ์ ์ผ๋ก ์ค์์ดํ๋ ์ฌ๋์ ์๊ฐ๋ฝ ์์ง์์ ์ถ์ ํ์ง ์๊ณ ์ ์ค์ฒ์ ๊ฒฐ๊ณผ์๋ง ์ ๊ฒฝ์ ์ธ ๋ ๊ฐ์ฅ ์ ํฉํ๋ค๊ณ ํ๋ค.
์ฆ, ์ด ํ๋ก์ ํธ์์ ํฐ์น๋ฅผ ์ด๋ค ์์ผ๋ก ํ๋ ๊ทธ ๊ณผ์ ๋ณด๋ค ์ผ์ชฝ์ผ๋ก ํ๋์ง, ์ค๋ฅธ์ชฝ์ผ๋ก ํ๋์ง ์ฌ๋ถ๊ฐ ์ค์ํ๊ธฐ ๋๋ฌธ์ ์ ํฉํ๋ค๊ณ ๋ณผ ์ ์๋ค.
๊ณ ๋ฏผํ ์ : addArrangedSubview๋ฅผ ํ์ ๋ ๋ ์ด์์์ ์ด๋ป๊ฒ addSubviewํ์ ๋์ฒ๋ผ ํ ์ ์์๊น?
์ฐธ๊ณ ์๋ฃ : Xcode lldb
ํด๊ฒฐ : ์ฒ์์๋ UIView์๋ addSubview, StackView์๋ addArrangedSubview๋ฅผ ์ฐ๋ฉฐ, ์ ์๋ translatesAutoresizingMaskIntoConstraints๋ฅผ false๋ฅผ ์ฃผ์ด ๋ ์ด์์ ์ ์ฝ์ ์ง์ ์ฃผ๋ ๋ฐ๋ฉด, ํ์๋ arranged ๋ฐฉ์์(axis, alignment, distribution) ์ค์ผ๋ก์จ ์ ์ฝ์ ๋ฐ๋ก ์ฃผ์ง ์๋ ๋ฐฉ์์ด๋ผ๊ณ ์๊ฐํ๋ค.
addArrangedSubview๋ ์ ์ฝ์ ์ค ์ ์๋ค๋ ๊ฒ์ ๋ถํธ ์บ ํ ํ์ต ๋์ฐ๋ฏธ ๋๋ถ์ ์๊ฒ ๋์์ง๋ง, ๊ทธ๋๋ ์ดํด๊ฐ ๊ฐ์ง ์๋ ์ ์ด ์์๋ค. ๋ ๋ค ์ ์ฝ์ ์ง์ ์ค ์ ์์ผ๋ฉด arrangedSubview๋ translates๋ฅผ false์ฒ๋ฆฌ ํด์ค์ผ ํ ๊ฑฐ๊ณ , ๊ทธ๋ ๋ค๋ฉด ๋๊ฐ์ด ์ฝ๋๊ฐ ๋ง์์ง๊ณ ์ง์ ๋ถํด์งํ ๋ฐ ๊ตณ์ด ์ด๊ฑธ ์ฐ๋ ์ฅ์ ์ด ์์๊น? ํ๋ ๊ฒ์ด์๋ค.
ํ์ง๋ง ๊ณต์๋ฌธ์์ ๋ธ๋ก๊ทธ์๋ ๊ด๋ จํ ์ ๋ณด๊ฐ ์์๊ณ , stackoverflow์๋ ์์ ์๋ฃ๋ก addArrangedSubview๋ ๊ธฐ๋ณธ์ผ๋ก ํด๋น ์์ฑ์ด false ์ฒ๋ฆฌ๋๋ค๋ ๋ง์ด ๊ทผ๊ฑฐ๊ฐ ๋ฌ๋ฆฌ์ง ์์ ์ฑ ์์๋ค.
ํด๋ต์ ์ป๊ธฐ ์ํด lldb๋ฅผ ํตํด addSubview ํ ๋์ addArrangedSubview๋ฅผ ํ ๋ ํ๋กํผํฐ์ ํด๋น ์์ฑ์ ์ฐ์ด๋ณด์๊ณ , stackoverflow์์์ ๋ง์ด ๋ง์์ ์ ์ ์์๋ค. ์ด๋ฅผ ํตํด addArrangedSubview๋ ๋ฌผ๋ก lldb์ ์ฌ์ฉ๋ฒ์ ๋ํด์๋ ์ข ๋ ์๊ฒ ๋์๋ค.
๊ณ ๋ฏผํ ์ : ํ๊ฒ ์๋ฎฌ๋ ์ดํฐ ๋ง๊ณ ๋ ์๊ฑฐ๋ ํฐ ๊ธฐ๊ธฐ์์์ ๋ ์ด์์ ๋์์ ํ๊ธฐ ์ํด์๋ ์ด๋ป๊ฒ ํด์ผํ ๊น?
์ฐธ๊ณ ์๋ฃ : Apple ๊ณต์๋ฌธ์(NSCollectionLayoutEnvironment)
ํด๊ฒฐ : ๊ธฐ์กด์๋ CollectionView์ Layout์ ๊ตฌ์ฑํ ๋ groupSize๋ฅผ absolute๋ estimated๋ก ์ง์ ๊ฐ์ ํ ๋นํ์๋๋ฐ, ๊ธฐ๊ธฐ ์ฌ์ด์ฆ์ ๋ง๊ฒ ๋์ ์ผ๋ก ์ฃผ๊ณ ์ถ์๋ค. ๊ด๋ จํ์ฌ ๊ฒ์ํ๋ค ๋ณด๋ ๊ณตํต์ ์ผ๋ก layoutEnvironment๋ผ๋ ํค์๋๊ฐ ๋์๊ณ , collectionViewLayout์ ๋ง๋ค ๋ ์ฌ์ฉํ๋ layoutEnvironment๋ฅผ ํ์ฉํ ์ ์๋ ๋ฐฉ๋ฒ์ ์ ํ ๋ฌธ์์์ ์ฐพ๊ฒ ๋์๋ค.
NSCollectionLayoutEnvironment๋ ๋ ์ด์์์ ์ปจํ ์ด๋ ๋ฐ ํ๊ฒฝ ํน์ฑ(์: ํฌ๊ธฐ ํด๋์ค ๋ฐ ๋์คํ๋ ์ด ๋ฐฐ์จ ์ธ์)์ ๋ํ ์ ๋ณด๋ฅผ ์ ๊ณตํ๋ ๋ฐ ์ฌ์ฉ๋๋ ํ๋กํ ์ฝ์ด๋ค.
ํ์ ์์ฑ์ ์๋ traitCollection์ ๋ณด๋ฉด horizontalSizeClass, verticalSizeClass๋ฅผ ํตํด ์ฌ์ด์ฆ ์ ๋ณด๋ฅผ ์ป์ ์ ์๊ณ , ๊ทธ ์์ฑ์ผ๋ก compact์ regular๋ฅผ ์ฌ์ฉํ ์ ์์๋ค. ๊ทธ๋ฌ๋ ์ด ๋์ ๊ธฐ์ค์ด ๋ฌด์์ธ์ง๋ ์ ์ ์์๋ค.
๊ณต์๋ฌธ์ UITraitCollection์์ ๋ต์ ์ป์ ์ ์์๋ค. ์์ดํฐ์ด ์ธ์์ ธ ์์ ๋ ๊ฐ๋ก ์ฌ์ด์ฆ, ๋ํ์ ธ ์์ ๋ ๊ฐ๋ก/์ธ๋ก ์ฌ์ด์ฆ๋ Compact, ์์ดํจ๋์์๋ ์ธ๋ก/๊ฐ๋ก ์ฌ์ด์ฆ๊ฐ ๋ชจ๋ Regular์๋ค. ํ์ง๋ง ์์ดํฐ๋ SE๋ถํฐ Max๊น์ง ๋ค์ํ๊ธฐ์ lldb๋ฅผ ํ์ฉํด๋ณด๊ธฐ๋ก ํ๋ค. ์ค์ ๊ฒฐ๊ณผ๋ iPhone Pro Max์ ๊ฒฝ์ฐ ๋ํ์ ๋ ๊ฐ๋ก ์ฌ์ด์ฆ๊ฐ Regular๋ก ๋ค์ด๊ฐ๋ ๊ฒ์ ํ์ธํ ์ ์์๋ค.
[๊ณต์๋ฌธ์ ์ ๊ณต ์ด๋ฏธ์ง]
[iPhone 14 Pro lldb]
[iPhone 14 Pro Max lldb]
- ์ฝ๋ ๋ฆฌํฉํฐ๋ง์ ํตํ ์ปจ๋ฒค์ ์ค์ ๊ต์
- ๋์ผํ ๊ตฌ์ฑ์ ๊ฐ์ง ViewController์ ๊ฐ์ฒด๋ช ๋ถ๋ฆฌ
- AutoLayout ์ ๋ฆฌ
- UserDefaults ๋์ CoreData ์ฌ์ฉ
- ๊ฒ์์ฐฝ ๋ก์ง ๋ณ๊ฒฝ
- README ์ถ๊ฐ ์ ๋ฆฌ