- ํต๊ณ ์, ๊ณ์ ๋จน์ด๋ ๊ด์ฐฎ์.
์ข์ ์์์ ๋ ๋จน๊ณ , ๋์ ์์์ ๋ ๋จน๋ ๋ ์ ๋๋ ค๊ฐ๋๋ก ๋๋
์ฆ๊ฑฐ์ด ์์ต๊ด ๊ธฐ๋ก ์๋น์ค, ํต๊ณ ์
๐ ์์ ์ฐ | ์ด์นํ | ์ต๊ฐ์ฐ |
---|---|---|
jeongkite | lsh328328 | Rody |
์ฐจ๋ถํ ๋๋น์ผ๋ก ๊ป๊ป๊ป ์๋ ๊น๋ถ๊ฐ์ฟต์ผ | ์ด์ ์๋ ์ฝ๋๋ฅผ ์์ฑ์ค์ ๋๋ค. | ๊ฐ๋ฐ์ด ์์ํด์ก๋ค. |
1. Alamofire
- Moya ๊ด๋ จ ๋ผ์ด๋ธ๋ฌ๋ฆฌ
2. KakaoOpenSDK
- ์นด์นด์ค ์์
๋ก๊ทธ์ธ์ ์ํ ๋ผ์ด๋ธ๋ฌ๋ฆฌ
3. Lottie
- ์ ๋๋ฉ์ด์
ํจ๊ณผ๋ฅผ ๊ฐ์ง ๋ทฐ๋ฅผ ๊ตฌํํ๊ธฐ ์ํ ๋ผ์ด๋ธ๋ฌ๋ฆฌ
4. Moya
- ์ธ๋ฏธ๋๋ ๋ฐฐ์ด ์๋ฒ ํต์ ์ ์ํ ๋ผ์ด๋ธ๋ฌ๋ฆฌ
5. ReactiveSwift
- Moya ๊ด๋ จ ๋ผ์ด๋ธ๋ฌ๋ฆฌ
6. RxSwift
- Moya ๊ด๋ จ ๋ผ์ด๋ธ๋ฌ๋ฆฌ
7. SnapKit
- Code base ๊ฐ๋ฐ์ ์ํํ๊ฒ ๋์์ฃผ๋ ๋ผ์ด๋ธ๋ฌ๋ฆฌ
8. Then
- Code base ๊ฐ๋ฐ์ ์ํํ๊ฒ ๋์์ฃผ๋ ๋ผ์ด๋ธ๋ฌ๋ฆฌ
์ฐ๋ฆฌ ์ฝ๋๋ ์ด๋ ๊ฒ ์จ๋ณด์
์ฐ๋ฆฌ ๊น์ ์ด๋ ๊ฒ ์จ๋ณด์
๐ฆ KeepGoEat-iOS
โฃ ๐ Storyboard
โ โฃ ๐ LaunchScreen.swift
โ
โฃ ๐ Application
โ โฃ ๐ AppDelegate.swift
โ โฃ ๐ SceneDelegate.swift
โ
โฃ ๐ Resource
โ โฃ ๐ Fonts
โ โฃ ๐ Assets.xcassets
โ โฃ ๐ Colors.xcassets
โ โฃ ๐ info.plist
โ
โฃ ๐ Common
โ โฃ ๐ Consts
โ โฃ ๐ Extensions
โ โฃ ๐ Utils
โ
โฃ ๐ Presentation
โ โฃ ๐ Splash
โ โฃ ๐ Base
โ โฃ ๐ Onboarding
โ โฃ ๐ Login
โ โฃ ๐ Home
โ โฃ ๐ GoalDetail
โ โฃ ๐ NewGoal
โ โฃ ๐ StoreGoal
โ
โฃ ๐ Network
โฃ ๐ Data
ํ : Home
- ์ฌ์ฌ์ฉ๋๋ View ๋ถ๋ฆฌ
- UICollectionView
- View ํ์ผ ๋ถ๋ฆฌ
- HomeView์ ๋ชจ๋ ํฉ์ณ HomeViewController์ view๋ฅผ HomeView๋ก ๋ณ๊ฒฝํด์คฌ๋ค.
๋ง์ดํ์ด์ง : StoreGoal
- Diffable DataSource
- ์ ์ฒด/๋ ๋จน๊ธฐ/๋ ๋จน๊ธฐ ํํฐ๋ง ๊ฐ๋ฅ
- ํํฐ๋ง์ผ๋ก ์ธํ ๊ตฌ์ฑ ์์ดํ ๋ณ๊ฒฝ ์ ์ ๋๋ฉ์ด์ ์ ์ํด ์ฌ์ฉํ๋ค.
์คํ๋์ : Splash
- UIImageView: ์คํ๋์ฌ ์ด๋ฏธ์ง๋ฅผ ๋ฃ๊ธฐ ์ํด ์ฌ์ฉํ์ต๋๋ค.
๋ก๊ทธ์ธ : Login
- UIImageView: ๋ก๊ทธ์ธ ์ด๋ฏธ์ง๋ฅผ ๋ฃ๊ธฐ ์ํด ์ฌ์ฉํ์ต๋๋ค
- UIButton: ์๋ฒ ๋ก๊ทธ์ธ ์์ฒญ์ ์ฐ๊ฒฐํ์ต๋๋ค.
๋ชฉํ ์์ธ : GoalDetail
- UILabel: ํด๋น ๋ทฐ์ ๊ธฐ๋ณธ์ ์ธ ํ ์คํธ๋ฅผ ํํํ์ต๋๋ค.
- UIButton: ๋ทฐ ์ด๋ or ์๋ฒ ์ฐ๊ฒฐ์ ์ฌ์ฉํ์ต๋๋ค.
- UIImageView: ๋ฐํ ์ํธ์ ๋ฃ์ ์ด๋ฏธ์ง๋ฅผ ์ํด ์ฌ์ฉํ์ต๋๋ค.
- UIStackView: ์ด๋ฒ ๋ฌ ์ง๋๋ฌ ๋ทฐ๋ฅผ ์ํด ์คํ๋ทฐ๋ฅผ ์ฌ์ฉํ์ต๋๋ค.
- UICollectionVIew: ์ด๋ฒ๋ฌ ๋ฌ์ฑ stamp๋ฅผ ํํํ๊ธฐ ์ํด ์ฌ์ฉํ์ต๋๋ค.
- ๋ฐํ ์ํธ ์์ฒด ๊ตฌํ
์จ๋ณด๋ฉ : Onboarding
- ์ ์ฒด์ ์ธ ๋ทฐ๋ฅผ pageControll / Button / CollectionView / UIButton์ผ๋ก ๋๋์ด ์ค์ผ์น
- Pagecontrol๋ก ํ์ด์ง๊ฐ ๋์ด๊ฐ๋ ๊ฒ ๊ตฌํ
- CollectionView ์์ <Title Label. Description Label. AnimationView(Lotti)>๋ฅผ ๋ฃ์ด ์ฝ๋ ์ ๋ทฐ ์ ์ ๋ง๋ฆ
- ๋ฒํผ์ ๋๋ฌ ํ์ด์ง๋ฅผ ๋๊ธฐ๊ณ , ์ค์์ดํ ํด๋ ๋ทฐ๊ฐ ๋์ด๊ฐ๋๋ก ๊ธฐ๋ฅ ๊ตฌํ
๋ชฉํ ์์ฑ ๋ฐ ์์ : NewGoal
- HeaderView๋ฅผ ๋ถ๋ฌ์ ์๋จ๋ฐ ๊ณ ์
- ๋ถ๊ธฐ์ฒ๋ฆฌ๋ก ๋๋จน๊ธฐ/ ๋๋จน๊ธฐ์ ๋ฐ๋ผ ๋ทฐ๋ฅผ ์ ํ์ํด (์๋ฒ์์ ๋ฐ์์ค๋ ๋ฐ์ดํฐ๋ฅผ ๊ธฐ๋ฐ์ผ๋ก)
- ๋ชฉํ ์ ๋ ฅ ํ ์คํธํ๋ ์ ํ ๋ก์ง ๊ตฌํ
- ํ ์คํ ์์ํ๋ฉด ๋ฐ์ค ์ ๋ฐ๋
- 15์ ์ด๋ด ๊ธ์ ์์ (์ค์๊ฐ ํ์ดํ ์ )
- ํน์๋ฌธ์ ์ ํ
- ํค๋ณด๋ ์ฌ๋ผ์ฎ๊ณผ ๋์์ ๋ฒํผ๋ ํจ๊ป ์ฌ๋ผ์ด
ํ๋ฉด์ ํ ํ, ํ ์คํธ ํ์
- ์์ดํ ์ถ๊ฐ, ์ญ์ ๋ฅผ ํ ๋ ํด๋น ๊ธฐ๋ฅ์ ์ํํ๊ณ HomeViewController๋ก ๋์์ toast๋ฅผ ๋์์ผ ํ๋ค. toast๊ธฐ๋ฅ ์์ฒด๊ฐ ์กด์ฌํ์ง ์๋ ์ํฉ๋ ์ด๋ ค์ ์ง๋ง View๋ฅผ ์ ํํ๊ณ ์ด๋ฅผ ๋์ฐ๋ ๋ถ๋ถ์ด ์ด๋ ค์ ๋ค. ์ด์ ๋ฅผ ์ฐพ๋ ๊ฒ์๋ ์๊ฐ์ด ๊ฑธ๋ ธ๋๋ฐ, ๊ทธ ์ด์ ๋ ๋ด๊ฐ ๋ทฐ์ ํ์ (exist์ธ์ง empty์ธ์ง..) ๋ณ์์ didSet์ ๊ฑธ์๋๋ฐ, ๊ฑฐ๊ธฐ ๋ทฐ ์์ฒด๋ฅผ ๋ค์ ๊ทธ๋ฆฌ๋โฆ(addSubview๋ ๋ค์ ํ๋โฆ.) ๊ทธ๋ฐ ์ง์ ํด๋ฒ๋ ค์ ํ์ผ๋ก ๋์์ค๋ฉด toast๊ฐ ๋จ์ง๋ง view๋ฅผ ์ฒจ๋ถํฐ ๋ค์ ๊ทธ๋ ค์ ๋ฐ๋ก ๋ฎ์ฌ๋ฒ๋ฆฌ๋ ์ผ์ด ์๊ธด๊ฑฐ์๋ค. ๊ทธ๋์ view๋ฅผ ๋ฃ์๋ค๊ฐ ๋นผ๋๊ฒ ์๋๋ผ isHidden์ผ๋ก ๋ณด์๋ค ์จ๊ฒผ๋ค ์ฒ๋ฆฌํ๋ค! ๊ทธ๋ฌ๋๊น ๋ณด์ด๋๋ผ~
Home ๋ชฉํ ๋ฆฌ์คํธ CollectionView์ ๋ชฉํ ์ถ๊ฐ ๋ฒํผ
- ๋ทฐ ์ค์ผ์น์์๋ collectionview์ footer๋ก ๋ฃ์ผ๋ ค ํ๋๋ฐ, ๋ชฉํ๋ฅผ ์ถ๊ฐํ๋ ๋ฒํผ์ฒ๋ผ ๋์ํ๊ธฐ์ collectionview์ cell๋ก ์ฒ๋ฆฌํด์ผ๊ฒ ๋ค ํ๋จํ๋ค. ์ดํ์๋ ๋ ๋๊ฒ ์๊ฐํ๋ฉด์ ๊ผผ๊ผผํ๊ฒ ์ค์ผ์น ํด์ผ๊ฒ ๋ค.
TableView์ Diffable DataSource ์ ์ฉ
- ๊ธฐ๋ฅ์ CollectionView๋ก ๊ตฌํํ๋ ๊ฒ์ด ๋ ์ ์ ํ ๊ฒ ๊ฐ๋ค๋ ํ๋จ์ผ๋ก ๊ตฌํ ๋ฐฉ๋ฒ์ ๋ฐ๊ฟจ๋ค. CollectionView๋ก๋ ํฐ ์ด์ ์์ด ๊ตฌํํ ์ ์์๋ค.
๋ฐํ ์ํธ ์์ฒด ๊ตฌํ
- ๋ฐํ ์ํธ๋ฅผ ์ฒ์ ๊ตฌํํด๋ดค์ต๋๋ค. ๋จ์ํ ํ๋ฉด์ UIView๋ฅผ ๋์์ฃผ๋ ๊ฒ์ด ์๋์์ต๋๋ค.
- ์ ๊ฐ ๋ฐํ ์ํธ๋ฅผ ๋์ฐ๊ณ ์ถ์ ๋ทฐ์ bottom๊ณผ ๋ฐํ ์ํธ ๋ทฐ์ top์ ๋ง์ถฐ์ ํ์์๋ ํ๋ฉด์ ๋์ฐ์ง ์๊ณ ๋ฐํ ์ํธ๋ฅผ ๋์ค๊ฒ ํ๋ ์ด๋ฒคํธ๊ฐ ๋ฐ์ํ์ ๋ makeConstraint๊ฐ ์๋ updateContraint๋ก ๋ฐํ ์ํธ ๋ทฐ์ ๋ ์ด์์์ ๋ค์ ์ก์์ฃผ๊ณ ์ ๋๋ฉ์ด์ ์ ๋ฃ์ด์คฌ์ต๋๋ค. ์ฌ๊ธฐ์ ๋ญ๊ฐ ์ด์ํจ์ ๋๊ผ๋๋ฐ ๋ฐ๋ก! ๋ท ๋ฐฐ์ ์ด๋์์ง๋ ํจ๊ณผ๊ฐ ์๋ค๋ ์ ์ด์์ต๋๋ค.
- ์ด๋ฅผ ํด๊ฒฐํ๊ธฐ ์ํด ๋ทฐ์ ๋ฐํ ์ํธ ๋ทฐ ์ฌ์ด์ UIView๋ฅผ ๋ฃ์ด์ฃผ๊ณ (์ดํ dimmedView) ๊ธฐ๋ณธ์ ์ผ๋ก isHidden์ true๋ก ํด์ฃผ๊ณ ๋ฐํ ์ํธ๊ฐ ์ฌ๋ผ์ฌ ๋ dimmedView๋ฅผ isHidden์ false์ฒ๋ฆฌ ํด์ฃผ์์ต๋๋ค.
์๋ฒํต์ ํ ๋ฐ์ดํฐ View์ ๋ฟ๋ ค์ฃผ๊ธฐ
- ๋ฌด์ง์ฑ ๋ทฐ์ ๋ทฐ์ปจ ๋ถ๋ฆฌํ๊ธฐ์ ํํญํ์ ๋ง์ ๋ถ๋ถ์ ๋๋ค. ๋ทฐ์ปจ์์ ์๋ฒ ํต์ ์ ํ๊ณ ์ป์ ๋ฐ์ดํฐ๋ฅผ ๊ฐ ๋ทฐ์ ๋ฟ๋ ค์ค๋ ๊ณ์ธต์ด ๋๋ฌด ๊น์ด์ง๊ณ private๋ก ์ ๊ทผ์ง์ ์๋ฅผ ํด๋์๋ ๋ณ์๋ค์ ์ ๋ถ open ์ ๊ทผ์ง์ ์๋ก ๋ฐ๊ฟ์ฃผ์์ต๋๋ค. ์ฝ๋์ ์ ์ง๋ณด์๊ฐ ์ด๋ ค์์ง๊ณ ์ฝ๋์ ๊ฐ๋ ์ฑ ๋ํ ๋๋น ์ก์ต๋๋ค. ์ด๋ฒ ์ฑ์ผ์์ ์ ์ฉํ์ง๋ ๋ชปํ์ง๋ง ์ด๋ฅผ ํด๊ฒฐํ๊ธฐ ์ํด ์ฐจ๋ผ๋ฆฌ ์ง๊ธ ์ ์ ์์ค์์๋ ๋ทฐ์ ๋ทฐ์ปจ์ ๋ถ๋ฆฌํ์ง ์์ ๊ฒ ๊ฐ์ต๋๋ค.
- ์ฑ์ผ ์ดํ ํด๋ฆฐ ์ํคํ ์ณ์ ๋ํด ๊ณต๋ถํ๊ณ ์ฝ๋ ๋ฆฌํฉํ ๋ง์ ์งํํด๋ณด๋ ค๊ณ ํฉ๋๋ค.
์ ๋ฐ์ ์ธ ๊ฐ๋ฐ์ ๋ํ ์ด๋ ค์
- ์ ๋ฐ์ ์ผ๋ก ๋ทฐ๋ฅผ ๋ ์ด์์ ์ง๋ ๊ฒ์ ๋ํ ์ด๋ ค์์ ์์์ต๋๋ค. ๊ทธ๋ฌ๋ ๊ธฐ๋ฅ์ ๋ํ ํจ์ ๋ก์ง๋ค์ด ์ฒ์์ด์ด์.. ๊ณ ์์ ํ์๋๋ค..ํํ ์ฒ์ ๋ณด๋ ๊ฐ๋ ์ด ๋ง์์ ๊ตฌ๊ธ๋ง์ผ๋ก ๊ธฐ๋ฅ์ ๊ตฌํ์ ๋ํ ๋ฐฉ์์ ์ดํดํ ํ ๊ฐ์ธ ํ๋ก์ ํธ ํ์ผ์์ ๋ทฐ๋ฅผ ๋จผ์ ๊ตฌํํ๋ ์ฐ์ต์ ํ์ต๋๋ค. ์ฐ์ต ์ ํ์๋ค์๊ฒ โ๋ด๊ฐ ~๋ฅผ ์ฐพ์๋ณด๋ ~ํ ๋ฐฉํฅ์ผ๋ก ๊ตฌํ์ ํ๋ฉด ๋๋ค ํ๋๋ผ, ์ด๋ฅผ ์ฐ๋ฆฌ ์๋น์ค์ ๋ฐ์ํ๊ธฐ ์ํด์ ~์ด๋ ๊ฒ ํด์ผํ ๊ฒ ๊ฐ์๋ฐ ์ด๋ป๊ฒ ์๊ฐํ๋?โ๋ผ๊ณ ๋ฌผ์ด๋ณด๋ฉด์ ์์นํ ์๋ฃ๋ค์ด ์ ๊ฐ ๋งก์ ๋ทฐ์ ๋ฐ์์ด ๊ฐ๋ฅํ์ง ํ์ธ์ ํ์ต๋๋ค. ์ดํ ์ฝ๋ฉ์ ์งํํ๋ ์ค ๋์ ํ ๋ชจ๋ฅด๊ฒ ๋ ๋ถ๋ถ์ด ์์ผ๋ฉด ์ฐ๋ฆฌ ์ฌ๋์ค๋ฌ์ด ๋ฆฌ๋์ธ ์ ์ฐ์ด, ์นํ์ด์๊ฒ ๋ฌผ์ด๋ณด์๊ณ ์์ด๋ค์ด ์ ์ฝ๋๋ฅผ ๋ณด๋ฉฐ ๋ทฐ ๊ธฐ๋ฅ์ ๋ง๊ฒ ์น์ ํ ์ค๋ช ๊ณผ ํจ๊ป ์์ ์ ํด์ฃผ๋ฉฐ ์์ ์ ์งํํ์ต๋๋ค! ํํ ์ ๋ค์ ๊ณ ๋ง์ก
์ ์ ์ฌํญ
- ์ ๋ ๋ณดํต ํ๋ฉด ํ๋ก์ฐ๋ ๊ธฐ๋ฅ์ ๋ํ ์ ์์ค์ ์ธ ์ ์์ ํ์ต๋๋ค. ํํ๋ฉด์์ ์ ์ฒด ์คํฌ๋กค์ด ์๋, ๋ชฉํ ๋ณด๊ด ๋ฆฌ์คํธ๋ค๋ง ์คํฌ๋กค์ด ๋๊ฒ ํ๋ ๊ฒ์ ์ด๋ป๋๊ณ ์ ์ํ๋ ๋ฑ ์ ์์ค์ ์ธ ์ธก๋ฉด์์ ๊ธฐ๋ฅ ์ ์์ ํ์ต๋๋ค.
์ฌ๋๊ณ ๋ฐฑ
- ์ฒ์ ๊ฐ๋ฐ ํ๋ก์ ํธ๋ฅผ ์งํํ๋๊ฑฐ๋ผ ๊ฑฑ์ ๋๊ธฐ๋ ํด์ ๋ฏธ๋ฆฌ ์นํ์ด์๊ฒ ๋ฏธ๋์ธ๋ฏธ๋ ํ์์ ๊น ๊ฐ์, ๊ฐ์ฒด ์งํฅ ์ค๋ช ์ ๋ฃ๊ณ ๊ฐ๋๋ฐ ์ ์ฐ์ด์ ์นํ์ด๊ฐ ์ฐจ๋ถํ๊ฒ ์ ์๋ ค์ฃผ์ด ๊น ํ์ ์ ํ ๋ ์ถฉ๋์ ๊ฑฐ์ ๋์ง ์์์ ๋ฟ๋ฏํ์ต๋๋. ์ฐ๋ฆฌ ์ ์ฐ, ์นํ์ด๊ฐ ์ ์๋ ค์ค์ ๊น์ ์ด๋ป๊ฒ ์ฌ์ฉํ๋์ง์ ๋ํ ์ดํด๊ฐ ์๊ฒจ์ ๋๋ฌด๊ณ ๋ง์์์น ์ฌ๋ํ๋น ๋ฒ ์ด๋น๋์