/Netflix-iOS

Netflix

Primary LanguageSwift

Netflix-iOS

Netflix

๐Ÿ”—Link

Source

https://github.com/doyeonjeong/Netflix-iOS

๐Ÿ“– ์ƒ์„ธ ๋‚ด์šฉ

1 2 Transition ๊ตฌํ˜„

๐Ÿ’ก ๊ฐœ๋ฐœ ๋ฐฐ๊ฒฝ

์„ ๋ฐฐ ๊ฐœ๋ฐœ์ž์ธ Arex๊ฐ€ Netflix Clone์„ ๊ฐ•์˜ ์—†์ด

Compositional Layout, Diffable DataSource, MVVM์„ ์ ์šฉํ•˜์—ฌ ๊ตฌํ˜„ํ•ด๋ณด๋ผ๋Š” 3์ฃผ์งœ๋ฆฌ ๋ฏธ์…˜์„ ์ฃผ์…”์„œ ์ง„ํ–‰ํ•ด๋ณธ ๊ฐœ์ธ ํ”„๋กœ์ ํŠธ์ž…๋‹ˆ๋‹ค.

์ง„ํ–‰ํ–ˆ๋˜ ๋‚ด์šฉ์„ ์ˆœ์ฐจ์ ์œผ๋กœ ๊ธฐ๋กํ•˜๊ธฐ ์œ„ํ•ด ์ฃผ์ฐจ๋ณ„ PR์„ ์™„๋ฃŒํ•œ ์ƒํƒœ์ž…๋‹ˆ๋‹ค.

์ฝ”๋“œ๋ฆฌ๋ทฐ ํ›„ Merge ํ•˜๊ธฐ๋กœ ํ–ˆ์Šต๋‹ˆ๋‹ค.

#1

#2

#3

๐Ÿ› ๏ธ ์‚ฌ์šฉ ๊ธฐ์ˆ  ๋ฐ ๋ผ์ด๋ธŒ๋Ÿฌ๋ฆฌ

  • Swift, iOS
  • UIKit
  • KMDB API
  • Lottie
  • Postman
  • UICompositionalLayout, UICollectionViewDiffableDataSourse, NSDiffableDataSourceSnapshot
  • NSCache, DispatchQueue, async/await, Task, URLSession

๐Ÿ“ฑ ๋‹ด๋‹นํ•œ ๊ธฐ๋Šฅ

  • NSLayoutConstraint๋ฅผ ์‚ฌ์šฉํ•œ ์˜คํ†  ๋ ˆ์ด์•„์›ƒ
  • Lazy ์ดˆ๊ธฐํ™”
  • private ๋ฉ”์„œ๋“œ ๋ฐ extension ๋กœ์ง ๋ถ„๋ฆฌ
  • CompositionalLayout๊ณผ DiffableDataSourse๋ฅผ ์‚ฌ์šฉํ•œ UI ๊ตฌํ˜„

๐Ÿ’ก ๊นจ๋‹ฌ์€ ์ 

  • async/await ๋ฌธ๋ฒ•์€ ๋น„๋™๊ธฐ ์ž‘์—…์„ ๋„์šฐ๋‚˜ ๊ทธ ์ž์ฒด๋กœ๋Š” ์ƒˆ๋กœ์šด ์Šค๋ ˆ๋“œ๋ฅผ ์ƒ์„ฑํ•˜์ง€ ์•Š์Œ
  • Task { await } ๊ตฌ๋ฌธ์œผ๋กœ ๋น„๋™๊ธฐ ์ž‘์—…์„ ๋ฐฑ๊ทธ๋ผ์šด๋“œ์— ์š”์ฒญํ•˜์—ฌ ๋ฉ€ํ‹ฐ์Šค๋ ˆ๋”ฉ ์ƒํ™ฉ์„ ๊ด€๋ฆฌํ•จ
  • DiffableDataSource๋ฅผ ์ด์šฉํ•˜์—ฌ ๋™์ ์ธ UI ์—…๋ฐ์ดํŠธ๊ฐ€ ๊ฐ€๋Šฅํ•จ
  • DispatchQueue ๋ฅผ ์ด์šฉํ•˜์—ฌ ๋ฉ”์ธ ์Šค๋ ˆ๋“œ์™€ ๋ฐฑ๊ทธ๋ผ์šด๋“œ ์Šค๋ ˆ๋“œ๋ฅผ ์ ์ ˆํ•œ ์‹œ์ ์— ์‚ฌ์šฉ
  • NSCache๋ฅผ ์ด์šฉํ•˜์—ฌ ๋ถˆ๋Ÿฌ์˜จ ์ด๋ฏธ์ง€ ๋ฐ์ดํ„ฐ์˜ ์บ์‹œ๋ฅผ ์ €์žฅํ•˜๋ฉด ๋น ๋ฅธ ๋กœ๋”ฉ์ด ๊ฐ€๋Šฅํ•จ
  • URLSession.dataTask ๊ฐ€ ๊ธฐ๋ณธ์ ์œผ๋กœ httpMethod์˜ GET ์š”์ฒญ์„ ํ•œ๋‹ค๋Š” ๊ฒƒ์„ ํ•™์Šตํ•จ