μ΄λ²μ νλ νλ‘μ νΈ νκ³ λ₯Ό ν΄λ³΄λ €κ³ ν©λλ€!
μ°μ 24.04.22~ 24.04.27 1μ£ΌμΌ λμ ν νλ‘μ νΈλ₯Ό μ§ννκ³ 4λͺ μ΄μ λμμΈ, μ€κ³, κ°λ°, λ°νκΉμ§ μ§ννμ΅λλ€.
μννκ² μ λ§λ¬΄λ¦¬ν κ² κ°μ λΏλ―νκ³ νμλ€ μ΄μ΄ κ΅μ₯ν μ’μλ κ² κ°μ΅λλ€.
μ§λ 1μ£Ό κ°μ νλ‘μ νΈ κ³Όμ μ κΈ°λ‘ν΄λ³΄κ³ μ ν©λλ€.
ποΈ νλ‘μ νΈ μκ°
- νλͺ : 8μμ‘°ποΈ
- νλ‘μ νΈλͺ : Bird Cinema
μ΄λ² νλͺ κ³Ό νλ‘μ νΈλ μ κ° μ μνλ μ΄λ¦μ΄ μ μ λμμ΅λλ€! γ γ
μλ₯Ό μ’μνμ§ μμ§λ§ μ΄λ¦λ€μ΄ κ·μ½κ³ λ§μμ λ€μλ΅λλ€ποΈπ
- νμ : GitHub, Notion, Slack, Figma
- κΈ°μ μ€ν : Xcode, Swift
νλ‘μ νΈ κΉνλΈ λ§ν¬λ μλ 첨λΆν΄ λμ΅λλ€.
https://github.com/yyujnn/BirdCinema
κ°λ° μ€κ³
νλ‘μ νΈλ₯Ό μμνκΈ° μμ SAλ₯Ό μμ±νλ μκ°μ κ°μ‘μ΅λλ€.
νμ ꡬν κΈ°λ₯
- λ‘κ·ΈμΈ / νμκ°μ
- μν λͺ©λ‘ page (TabBarμ 첫 λ²μ§Έ νλ©΄)
- μν μ΄λ―Έμ§λ€μ μ’μ° μ€ν¬λ‘€ κ°λ₯ (CollectionView)
- TMDB API μ¬μ©
- μν μμΈ page
- μνλ₯Ό ν΄λ¦ μ μ΄λ
- μν μ 보λ₯Ό ν¨κ» 보μ¬μ£ΌκΈ°
- μν μ맀 μ
λ ₯ page
- μμΈ νμ΄μ§μμ μ λ ₯νκΈ° λ²νΌ ν΄λ¦ μ μ΄λ
- μ맀λ₯Ό μν΄ μ λ ₯ν κ²λ€ μ λ ₯ κ°λ₯νλλ‘ κ΅¬μ±
- κ²°μ νκΈ° λ²νΌμ λλ₯΄λ©΄ κ²°μ λ΄μμ΄ λ§μ΄νμ΄μ§μμ 보μ΄λλ‘ κ΅¬ν
- μν κ²μ page (TabBarμ λ λ²μ§Έ νλ©΄)
- κ²μμ°½μ ν μ€νΈλ₯Ό μ λ ₯νλ©΄ ν΄λΉ ν μ€νΈκ° ν¬ν¨λ μνλ₯Ό νμ (CollectionView)
- λ§μ΄ page (TabBarμ μΈ λ²μ§Έ νλ©΄)
- λμ νμν κ³μ μ 보λ₯Ό νμ
- μ맀ν μν λ΄μ νμΈ
μμ κ·μΉ
λΈλμΉ μ΄λ¦ κ·μΉκ³Ό μ»€λ° λ©μΈμ§ κ·μΉκ³Ό νΈμ κ·μΉλ μμ μ μ μ νμ΅λλ€.
μ»€λ° λ©μΈμ§ κ·μΉμ΄ μμΌλ μ΄λ€ λ΄μ©μ μμ νλμ§ λ°λ‘ μ μ μκ³ μ»€λ° νμ€ν λ¦¬κ° κΉλν΄μ μ’μμ΅λλ€.
κΉνλΈμ μΉν΄μ§λ κ³Όμ μ μ λ² νλ‘μ νΈμμ μΆ©λΆν κ²½νν΄ λ΄μ κ·Έλ°μ§ μ΄λ²μλ ν° κ³ λΉ μμ΄ κ·μΉλ μ ν΄λκ³ μμ ν μ μμμ΅λλ€.
μμ΄μ΄ νλ μ
μμ΄μ΄ νλ μμ νΌκ·Έλ§μμ λ νΌλ°μ€λ₯Ό μ°Έκ³ ν΄μ κ·Έλ Έμ΅λλ€.
λ°°κ²½μκ³Ό ν¬μΈνΈ 컬λ¬λ νμ₯λμ΄ μ견μ λ΄μ£Όμ ¨λλ° μμ£Ό μμ©λλ€!
ν μ½μ
- λ§€μΌ μ€μ 10μ: μμ κ³ν νμ
- λ§€μΌ μ€ν 8μ: μμ λ΄μ© 곡μ λ° νκ³
λ§€μΌ ν루μ κ³ν λ° μμ λ΄μ©μ 곡μ νλ μκ°μ κ°μ‘μ΅λλ€.
κ°λ° μ§ν κ³Όμ
π©π»π» λμ μν
- μν μ맀 νμ΄μ§ ꡬν
- λ§μ΄ νμ΄μ§ ꡬν
- νμ΄μ§ λ°μ΄ν° μ°κ²°
- μ°νκΈ° κΈ°λ₯ ꡬν
1) Login & Sign In
μ΄λ©μΌκ³Ό λΉλ°λ²νΈλ₯Ό λ°μ λ‘κ·ΈμΈν μ μλ λ‘κ·ΈμΈ λ° νμκ°μ νμ΄μ§μ λλ€.
μ λ λ§μ΄νμ΄μ§μμ λ‘κ·ΈμΈν μ΄λ©μΌ μ 보λ₯Ό λΆλ¬μ€λλ‘ κ΅¬ννμ΅λλ€!
2) Home
λ©μΈνμ΄μ§μμ TMDB APIμμ λΆλ¬μ¨ μν μ 보λ€μ νμΈν μ μμ΅λλ€!
μ λ λ©μΈ νλ©΄μμ νλ° μ»¨νΈλ‘€λ¬λ₯Ό μ μ©ν΄μ μ΄λν μ μκ² κ΅¬ννμ΅λλ€.
λν 컬λ μ λ·°λ₯Ό μ ννμ μ μμΈνμ΄μ§λ‘ μ΄λνλ λ‘μ§κ³Ό 컬λ μ λ·° μμ μ맀νκΈ° λ²νΌμ μ ννμ μ μ맀 νμ΄μ§λ‘ μ΄λνλ λ‘μ§μ μμ±νμ΅λλ€!
컬λ μ λ·°λ₯Ό μ ννμ μμλ delegateμ didSelectItemAt λ©μλλ₯Ό νμ©ν΄μ νλ©΄ μ ν λ° λ°μ΄ν° μ λ¬μ μ§ννμ΅λλ€.
λ·° μμ λ²νΌμ ν΅ν΄ μ΄λνλ λ‘μ§μ μ²μμ μ΄λ €μμ΄ μμμ§λ§ λ²νΌμ μ‘μ λ©μλμμ ν΄λ‘μ λ₯Ό νΈμΆνλ λ°©μμΌλ‘ ν΄κ²°νμ΅λλ€!
μ΄λ cellForItemAtμμ μ μ ν΄λ‘μ λ₯Ό μ λ¬νμ¬ μν μ λ³΄κ° μ λ¬λλλ‘ κ΅¬ννμ΅λλ€.
μ€λ³΅ μ½λκ° λ§μμ‘λ€λ λ¨μ μ΄ μμ§λ§ ν΄κ²° λ°©λ²μ μΆνμ κ³ λ―Όν΄ λ΄μΌκ² μ΅λλ€..!
3) Detail
μ νν μνμ μ 보λ₯Ό νμΈνλ λν μΌ νμ΄μ§μ λλ€.
μ λ λ§μ§λ§ λ μ μκ°μ΄ μ‘°κΈ λ¨μ μ°νκΈ° κΈ°λ₯μ λμ ν΄ λ³΄μμ΅λλ€!
νμλΆμ΄ λ§λ€μ΄λ μ맀νκΈ° λ²νΌμ μ°νκΈ° λ²νΌμ μΆκ°ν΄μ addTargetμ ν΅ν΄ λ°μ΄ν°λ₯Ό μ μ₯νλ λ‘μ§μ μμ±νμ΅λλ€.
λν μ°νκΈ°λ₯Ό λλ₯Έ ν λ€μ νλ©΄μ μ΄λνμ λ ννΈμ μμμ΄ λ³κ²½λμ§ μλ μ΄λ €μμ΄ μμλλ°
μ κ° λΉλκΈ° μμ
μ μκ°μ κ³ λ €νμ§ μκ³ UI μ
λ°μ΄νΈλ₯Ό μ§ννλ λ¬Έμ μ μ΄μμ΅λλ€!
μμ μ μ νμ
νμ§ λͺ»νλλ° DispatchQueue.main.asyncλ‘ λΉλκΈ° μμ
μΌλ‘ λ°μ΄ν°λ₯Ό λ°μμ¨ ν λ²νΌμ UIλ₯Ό ꡬμ±νλ μμ
μ νλλ‘ UI μ
λ°μ΄νΈ μμ μ λ³κ²½ν΄μ ν΄κ²°νμ΅λλ€.
4) Reservation
μ νν μνλ₯Ό μ맀νλ pageμ λλ€.
μ΄ νλ©΄μ μ κ° κ΅¬ννλλ° UIDatePickerλ₯Ό μ¬μ©νμ¬ λ μ§λ₯Ό μ ννκ³ μ»¬λ μ λ·°λ₯Ό ν΅ν΄ μκ° μ ν μ μ ꡬμ±νμμ΅λλ€!
μλ λ²νΌμ ν΅ν΄ μλ μ‘°μ λ° μ΄κΈμ‘μ΄ μ λ°μ΄νΈλλλ‘ κ΅¬ννκ³ λ μ§, μκ°, μΈμ μ€ νλλΌλ μ νμ μ νλ©΄ κ²°μ λ²νΌμ λλ₯΄μ§ λͺ»νλλ‘ μ ννμ΅λλ€.
UIλ₯Ό μ°Έκ³ ν λ νΌλ°μ€κ° λΆμ‘±νμ§λ§ μ λ§μμλ λ€λλ‘ κ΅¬νν κ² κ°μ΅λλ€γ γ
5) Search
νλ°μ λ λ²μ§Έ νλ©΄μΈ κ²μ pageμ λλ€.
μ΄ νλ©΄μ μ κ° κ΅¬νν λΆλΆμ΄ μμ΄μ SearchBar delegateμ λν 곡λΆκ° νμν κ² κ°μ΅λλ€!
6) My Page
νλ°μ μΈ λ²μ§Έ νλ©΄μΈ λ§μ΄ pageμ λλ€.
μ΄ νλ©΄λ μ κ° κ΅¬ννμλλ° λ‘κ·ΈμΈ μ 보μ κ²°μ νκΈ° λ²νΌμ ν΅ν΄ μ맀ν μνλ μ°ν μνλ₯Ό νμΈν μ μλλ‘ νμ΅λλ€!
ν μ΄λΈλ·°λ‘ μΉμ μ λλμ΄ κ°κ° μνλ λ΄μ©μ νμνλλ‘ κ΅¬μ±νμ΅λλ€.
λν μ΄λμλ νμ ν΄λ¦νμ λ λ°μ΄ν°κ° μ λ°μ΄νΈ λλλ‘ viewWillAppearλ₯Ό μ¬μ©νμ΅λλ€.
νλ‘μ νΈ κ΅¬μ‘°
νλ‘μ νΈ κ΅¬μ‘°λ λ€μκ³Ό κ°μ΄ MVCν¨ν΄μ νμ©νμ΅λλ€.
νλ‘μ νΈ κΈ°κ°
νλ‘μ νΈ μ€κ³ ν 3μΌ μ λλ 맑μ νμ΄μ§μ λν κΈ°λ₯μ μ΅λν ꡬννλ μκ°μ κ°μ‘μ΅λλ€.
λν νμ ꡬνμ΄ μλ£λ ν μΆκ° κΈ°λ₯ ꡬν λ° λν μΌ μμ μ μ§ννμ΅λλ€.
κΈ°κ° λ΄μ μλ£λκ³ μ£Όλ§μλ 리λλ―ΈκΉμ§ μμκ² μμ νλ μμ μ νλλ° κ²°κ³Όμ μΌλ‘ μΉμ°¬μ λ°μμ λΏλ―νμ΅λλ€!
μ΅μ’ μμ° μμ
https://www.youtube.com/watch?v=-2Fh_SXVbxI
μ΅μ’ ꡬν λ΄μ©μ΄ λ΄κΈ΄ μμμ λλ€.
KPT νκ³
π¨π»π» νν°λ νΌλλ°±
- λΈλμΉ λ° μ»€λ° λ©μΈμ§ κ·μΉ μ ν΄λ λΆλΆ μΉμ°¬.
- ννλ‘μ νΈλ νμ μ νλ μ°μ΅ > μ€ν 리보λ λ¨Έμ§.. μ₯μ λ¨μ !! μ€μ λ‘ κ²ͺμ΄λ³΄κ³ ν΄κ²°ν΄ 보면 체λν μ μμ. λ΄κ° κ²ͺμ λ¬Έμ κΉμ§ κ°μ΄ νκ³ νκ³ μ λ¦¬ν΄ λκΈ°!
- λͺ¨λΈμ λ°λΌ μν λΆλ΄μ μν΄μ£Όμ κ²μ΄ μΈμ κΉμμ΅λλ€! λͺ¨λΈμ΄ λ°λμμ λ side effect κ³ λ €.
- κ°μ μ½λκ° λ°λ³΅λλ κ²μ μ΄λ»κ² μ 리νλ©΄ μ’μμ§ > genericμΌλ‘ μ΄λ»κ² μ 리ν μ μμμ§ κ³ λ―Όν΄ λ³΄κΈ°
- KPT νκ³ > μμΌλ‘ μ΄λ»κ² ν΄μΌ ν μ§ μ μ§κ³ λμ΄κ° κ²μ΄ λ§€μ° μ’μ.
- github readme μ 리λ₯Ό μνμ! ν¬ν΄λ‘ νμ©νκΈ° μν΄μλ 리λλ―Έλ₯Ό κΌ κΌ κΌ λ―Έλ¦¬λ―Έλ¦¬λ―Έλ¦¬ μ 리νκΈ°!!
μ΄λ²μλ μ½μ½μ’ νν°λμ νΌλλ°±μ μΉμ°¬λ°μ λΆλΆμ λΏλ―νκ³ λ μμ νκ³ μ±μ₯ν΄μΌ ν λΆλΆμ κ³ λ―Όν μ μμμ΅λλ€!
πKeep
- 미리 λ°μ΄ν° μ λ¬μ μν λ°μ΄ν° ꡬμ±μ νμνμ¬ λ¬Έμ μμ΄ λ‘μ§ μ°κ²°μ΄ μ λ μ
- Git κ΄λ¦¬ κ·μΉμ μ§μΌ κ°λ μ±μ΄ λμμ§ μ
- κ°μμ λ·° 컨νΈλ‘€λ¬λ₯Ό κ°μ κ΄λ¦¬νλ merge conflict λ°μμ΄ νμ ν μ€μ΄λ μ
πProblem
- λΉλκΈ° μμ μ μκ°μ κ³ λ €νμ§ μκ³ UI λ°μ΄ν° μ λ°μ΄νΈλ₯Ό μ§νν μ
- ꡬν κΈ°λ₯μ΄ λ§κ³ 볡μ‘ν μλ‘ μ½λμ νλ¦μ λ°λΌκ°κΈ° μ΄λ €μ λ μ
- μ€λ³΅ μ½λκ° λ€μ νμΈλμ΄ λ³΅μ‘νκ³ κ°λ μ±μ΄ λ¨μ΄μ§λ μ
πTry
- μ€λ³΅ μ½λλ₯Ό μ΅μννκ³ ν¨μ¨μ μΈ κ΅¬μ‘°λ‘ κ°μ νκΈ°
- μ½λμ μΈλΆμ μΈ νλ¦ νμ κ³Ό λΈλ μ΄ν¬ ν¬μΈνΈλ₯Ό μ¬μ©ν λλ²κΉ μ°μ΅νκΈ°
π¬ Feel
μ¬λ¬ κΈ°λ₯μ μλν΄ λ³΄λ©΄μ μ±μ₯ν μ μμμ΅λλ€!
UIλ κΈ°λ₯λ μ λΆ μμκ² μ λ κ² κ°μ λΏλ―ν νλ‘μ νΈμμ΅λλ€.
μ΄λ² νλ‘μ νΈλ νμ₯κ³Ό λ°νλ₯Ό λ§‘μ§ μμ μ‘°κΈ νΈν λ§μμΌλ‘ κ°λ°μ μ§μ€ν μ μμμ΅λλ€!
νμ₯λμ΄ λ°νλ₯Ό μν΄μ£Όμ μ νλ‘μ νΈκ° μ λ§λ¬΄λ¦¬λμλ κ² κ°μ΅λλ€. μ΅κ³ ~
λν κ°μ 맑μ λΆλΆμ λ€λ€ μν΄μ£Όμ μ κΈ°κ° λ΄μ μννκ² λ¬Έμ μμ΄! λ§λ¬΄λ¦¬λμλ κ² κ°μ νμλΆλ€μκ² κ°μ¬ν©λλ€.
λ€μ νλ‘μ νΈλ νμ΄ν μ λλ€!ππ»ππ»ππ»
'Projectπ‘' μΉ΄ν κ³ λ¦¬μ λ€λ₯Έ κΈ
[Project/iOS] ifμ‘° - MacDonald's ν€μ€μ€ν¬ μ± (0) | 2024.04.16 |
---|---|
[Project/iOS] μ€λ¦°μ΄λ€ - ν μκ° App (2) | 2024.03.08 |