์„ค๋ช…

  • ์‹ค์ œ ๋™์ž‘ํ•˜๋Š” ์Šคํƒ€๋ฒ…์Šค ์•ฑ์„ ํด๋ก  ์ฝ”๋”ฉํ•˜์˜€์Šต๋‹ˆ๋‹ค.
  • ์ฒ˜์Œ์œผ๋กœ ํŒ€ํ”Œ์„ ์ง„ํ–‰ํ–ˆ์œผ๋ฉฐ, commit convention, ๋ธŒ๋žœ์น˜ ์ „๋žต๋“ฑ์„ ์‚ฌ์šฉํ•ด๋ณด์•˜์Šต๋‹ˆ๋‹ค.

๋™์ž‘ ํ™”๋ฉด

Branch Strategy

  • S03A forked branch์— feature ๋ณ„๋กœ ๋‚˜๋‰œ ๋ณ€๊ฒฝ ์‚ฌํ•ญ์„ Merge
  • Conflict ํ•ด๊ฒฐ ํ›„, Remote์— PR์„ ๋ณด๋‚ด๋Š” ๋ฐฉ์‹์œผ๋กœ ์ง„ํ–‰
  • ์ด ๋•Œ, Branch๋ฅผ ์ƒ์„ฑํ•  ๋•Œ, namespace๋ฅผ Scene ๋‹จ์œ„๋กœ ์ž‘์—…ํ•˜์—ฌ branch์˜ ๋ถ„๋ฆฌ๋ฅผ ์šฉ์ดํ•˜๊ฒŒ ํ•˜๊ณ ์ž ํ•จ

Code Structure

  • VIPER ๊ตฌ์กฐ๋ฅผ ์‚ฌ์šฉํ•˜๋Š” ๊ฒƒ์„ ์ฒซ๋ฒˆ์งธ ์ฃผ์˜ ๋„์ „๊ณผ์ œ๋กœ ์ •ํ–ˆ์Šต๋‹ˆ๋‹ค.
  • Repository ํŒจํ„ด์„ ์‚ฌ์šฉํ•˜์—ฌ ์‚ฌ์šฉ์ž์˜ ๊ณผ๊ธˆ์„ ์‹ ๊ฒฝ์ผ์Šต๋‹ˆ๋‹ค.
  • ๋˜ํ•œ API๊ฐ€ ๋ณต์žกํ•˜์—ฌ ์š”์ฒญ๊นŒ์ง€์˜ ๊ฒฐ๊ณผ๊ฐ€ ์˜ค๋ž˜๊ฑธ๋ฆฐ๋‹ค๋Š” ์ ์„ ๊ฐ์•ˆํ•˜์—ฌ ๋น ๋ฅธ ๋ฐ˜์‘์„ฑ์„ ์œ„ํ•ด Core Data๋ฅผ ์‚ฌ์šฉํ•˜์˜€์Šต๋‹ˆ๋‹ค.
  • ๋˜ํ•œ ์ตœ๋Œ€ํ•œ ์™ธ๋ถ€๋ผ์ด๋ธŒ๋Ÿฌ๋ฆฌ๋ฅผ ์‚ฌ์šฉํ•˜์ง€ ์•Š๊ณ  ๊ตฌํ˜„ํ•˜๋Š” ๊ฒƒ์— ๋ชฉ์ ๋‘์—ˆ์Šต๋‹ˆ๋‹ค.

ํด๋” ๊ตฌ์กฐ

  • ์”ฌ ๋ณ„๋กœ ํด๋”๋ฅผ ๋‚˜๋ˆ„์–ด์„œ ๊ด€๋ฆฌํ•˜์˜€์Šต๋‹ˆ๋‹ค.
  • ํ•˜์ง€๋งŒ, ์”ฌ๋งˆ๋‹ค ๋„คํŠธ์›Œํฌ ํ†ต์‹ ์ด๋‚˜ ์ €์žฅํ•˜๋Š” ๋ฐฉ์‹์ด ๋‹ฌ๋ผ์ง€์ง€ ์•Š๋Š” ๋ฌธ์ œ๊ฐ€ ๋ฐœ์ƒํ•˜์—ฌ ๋‚˜์ค‘์—๋Š” ์ค‘๋ณต๋œ ์ฝ”๋“œ๋ฅผ ์ €์žฅํ•˜๋Š” ๊ณต๊ฐ„์„ ๋งˆ๋ จํ•ด์•ผ ํ–ˆ์Šต๋‹ˆ๋‹ค.
  • ์ด๋ ‡๊ฒŒ ์žฅ๋ฉด๋ณ„๋กœ ํด๋”๋ฅผ ๋‚˜๋ˆ„์–ด ๊ด€๋ฆฌํ•˜๊ธฐ ๋ณด๋‹ค๋Š”, ์ „์ฒด์ ์ธ ์•ฑ์˜ ํ๋ฆ„์„ ๊ธฐ๋ฐ˜์œผ๋กœ ๋ ˆ์ด์–ด๋ฅผ ๋‚˜๋ˆ„์–ด์„œ ๊ด€๋ฆฌํ•œ๋Š ๊ฒƒ์ด ํšจ์œจ์ ์ด๋ผ๋Š” ์ƒ๊ฐ์„ ํ–ˆ์Šต๋‹ˆ๋‹ค.

Event Scene

  • 24์‹œ๊ฐ„ ์ดํ›„ ์ด๋ฒคํŠธ ํด๋ฆญ์‹œ ์ด๋ฒคํŠธ ํ™”๋ฉด ๋œจ๋„๋ก
  • UserDefault์— ๊ฐ’์„ ์ €์žฅํ•˜๊ณ , ์ด๋ฅผ ์ถ”์ ํ•จ
  • ํ™”๋ฉด Layout ๋ณ€๊ฒฝ์— ๋Œ€์‘

Home Scene

  • ์‚ฌ์šฉ ๊ธฐ์ˆ 
    • UICompositionalLayout
    • DiffableDataSource
  • ํ™ˆํ™”๋ฉด์— ํ‘œ์‹œํ•  ๋ฐ์ดํ„ฐ๋ฅผ ๋ถˆ๋Ÿฌ์™€ ํ™”๋ฉด์— ํ‘œ์‹œํ•จ
  • ํŠน์ • section์— ๋Œ€ํ•˜์—ฌ ์ˆ˜์ง ์Šคํฌ๋กค ๊ฐ€๋Šฅํ•˜๋„๋ก ๊ตฌํ˜„
  • ์ƒํ’ˆ ํ„ฐ์น˜์‹œ ์ƒ์„ธํ™”๋ฉด์œผ๋กœ ์ด๋™
  • Whatโ€™s New ๋ฒ„ํŠผ ํƒญ์‹œ ํ™”๋ฉด์œผ๋กœ ์ด๋™

WhatsNewScene

  • ์‹ ์ œํ’ˆ ์†Œ์‹ ํ‘œ์‹œ
  • compositional layout์„ ์‚ฌ์šฉํ•˜์—ฌ ๊ฐ€๋กœ ํ™”๋ฉด์œผ๋กœ ๋ณผ ์ˆ˜์žˆ๋„๋ก ํ•จ

Payment Scene

  • ๋žœ๋ค์œผ๋กœ ๋ฐ”์ฝ”๋“œ ์ƒ์„ฑํ•˜์—ฌ ํ™”๋ฉด์— ํ‘œ์‹œ
  • ํ™”๋ฉด ์ง„์ž…์‹œ 3๋ถ„ ์นด์šดํŠธ๋‹ค์šดํ›„ ์œ ํšจ๊ธฐ๊ฐ„์ด ๋งŒ๋ฃŒ๋˜์—ˆ์Œ์„ ์•Œ๋ฆฌ๊ณ  ๋ฐ”์ฝ”๋“œ์ƒ‰๊น”์„ ์˜…๊ฒŒ ์ฒ˜๋ฆฌ
  • ์‹ค๊ธฐ๊ธฐ์—์„œ ์‚ฌ์šฉ์‹œ money ๋ฒ„ํŠผ ํ„ฐ์น˜์‹œ ์นด๋ฉ”๋ผ ์‹คํ–‰
  • ์‚ฌ์ง„์ดฌ์˜์‹œ ์ง€ํ๋ฅผ ์ธ์‹ํ•˜์—ฌ ํ™”๋ฉด์— ๋„์›€
  • 1000์› ๋งˆ๋‹ค ๋™์ „์ด ์ปต์— ๋“ค์–ด๊ฐ€๋Š” ์• ๋‹ˆ๋ฉ”์ด์…˜ ์žฌ์ƒ
  • ์‚ฌ์šฉ ๊ธฐ์ˆ 
    • CoreAnimation
    • CoreML
    • Vison
    • AVFoundation

Order Scene

  • ์Œ๋ฃŒ, ํ‘ธ๋“œ, ์ƒํ’ˆ ํƒญ๋ณ„๋กœ ์นดํ…Œ๊ณ ๋ฆฌ ํ‘œ์‹œ (์˜ˆ: ์ฝœ๋“œ๋ธŒ๋ฃจ, ๋จธ๊ทธ์ปต ๋“ฑ)
  • ์ƒ๋‹จ์˜ ๊ฒ€์ƒ‰์ฐฝ์œผ๋กœ ์นดํ…Œ๊ณ ๋ฆฌ ํ•„ํ„ฐ๋ง ๊ฐ€๋Šฅ
  • ์นดํ…Œ๊ณ ๋ฆฌ ํƒญ์‹œ ํ•ด๋‹น ์นดํ…Œ๊ณ ๋ฆฌ๋‚ด์˜ ์ƒํ’ˆ๋“ค์„ ํ‘œ์‹œ
  • ์ปค์Šคํ…€ SegmentedControll
  • ์‚ฌ์šฉ ๊ธฐ์ˆ 
    • DiffableDataSource
    • UICompositionalLayout

Category Scene

  • ์นดํ…Œ๊ณ ๋ฆฌ๋‚ด์˜ ์ƒํ’ˆ๋“ค์„ ํ‘œ์‹œ
  • ์ƒํ’ˆ ์„ ํƒ์‹œ ์ƒ์„ธ ํ™”๋ฉด์œผ๋กœ ์ด๋™
  • ์›๋ž˜๋Š” ์ฝ”์–ด๋ฐ์ดํ„ฐ์— ์ €์žฅํ•˜์ง€ ์•Š๊ณ  ๋„คํŠธ์›Œํฌ ์š”์ฒญ๋งŒ์œผ๋กœ ์ฒ˜๋ฆฌํ•˜๊ณ  ์‹ถ์—ˆ์œผ๋‚˜ ๋ฐ˜์‘์„ฑ ๋ฌธ์ œ๋•Œ๋ฌธ์— ์ฝ”์–ด๋ฐ์ดํ„ฐ์— ์ €์žฅํ•˜๊ณ  ๋กœ๋“œํ•˜๋Š” ๋ฐฉ์‹์œผ๋กœ ๋ณ€๊ฒฝ
  • ์‚ฌ์šฉ ๊ธฐ์ˆ 
    • DiffableDataSource
    • UICompositionalLayout
    • CoreData

Detail Scene

  • ์ตœ๋Œ€ํ•œ ์Šคํƒ€๋ฒ…์Šค ์•ฑ๊ณผ ๋น„์Šทํ•œ UI๋ฅผ ๊ฐ€์ง€๋„๋ก ๊ตฌํ˜„
  • ์Šคํฌ๋กค๋ทฐ์˜ contentOffset.y ์™€ ์ด๋ฏธ์ง€๋ทฐ์˜ topConstraint๋ฅผ ํ™œ์šฉํ•˜์—ฌ ์Šคํฌ๋กค์‹œ ์ด๋ฏธ์ง€๊ฐ€ ๊ฐ™์ด ์˜ฌ๋ผ๊ฐ€๋„๋ก ๊ตฌํ˜„
  • ํŠน์ •์œ„์น˜๊นŒ์ง€ ์Šคํฌ๋กค์„ ๋‚ด๋ ธ์„๋•Œ NavigationBar๋ฅผ ์Šคํƒ€๋ฒ…์Šค ์•ฑ์ฒ˜๋Ÿผ ํ•˜๊ณ  ์‹ถ์—ˆ์œผ๋‚˜ ๊ตฌํ˜„์‹คํŒจ
  • navigationController.navigationBar.barTintColor ๋ฅผ ๋ณ€๊ฒฝํ•  ์ˆ˜ ์—†์—ˆ์Œ. + ๋‹ค๋ฅธ ์—ฌ๋Ÿฌ๊ฐ€์ง€ ๋ฌธ์ œ
  • ํ•˜ํŠธ ๋ˆ„๋ฅผ์‹œ CoreData์˜ ํ•ด๋‹น ์•„์ดํ…œ์˜ favorite bool๊ฐ’์„ ๋ณ€๊ฒฝ
  • ์ฃผ๋ฌธํ•˜๊ธฐ ๋ˆ„๋ฅผ์‹œ 1์ดˆํ›„ ๋กœ์ปฌ ํ‘ธ์‹œ์•Œ๋ฆผ์ด ์˜ด (์•ฑ ์ตœ์ดˆ์‹คํ–‰์‹œ ๊ถŒํ•œ ์„ค์ • alert ๋„์›€)
  • ์‚ฌ์šฉ ๊ธฐ์ˆ 
    • DiffableDataSource
    • UICompositionalLayout
    • CoreData

Favorite Scene

  • CoreData์˜ ์ƒํ’ˆ์ค‘ favorite bool๊ฐ’์ด true ์ธ ๊ฒƒ๋งŒ ํ‘œ์‹œ
  • ํ•˜ํŠธ, ์ฃผ๋ฌธํ•˜๊ธฐ ๋ฒ„ํŠผ ์ƒ์„ธํ™”๋ฉด๊ณผ ๋™์ผํ•˜๊ฒŒ ๋™์ž‘. (+ ํ•˜ํŠธ ํ„ฐ์น˜์‹œ ๋ฐ”๋กœ ๋ชฉ๋ก์—์„œ ์ œ๊ฑฐ)

๋ฌธ์ œ ์ƒํ™ฉ

  • ์ƒ์„ธํ™”๋ฉด์„ ์‹ค์ œ ์•ฑ๊ณผ ๋˜‘๊ฐ™์ด ๊ตฌํ˜„ํ•˜๋Š”๊ฒƒ์ด ์–ด๋ ค์› ์Œ

    • ScrollView vs CollectionView

    • NavigationBar ์•ŒํŒŒ, ์ƒ‰์ƒ ์กฐ์ ˆ

    • scrollView offset์— ๋”ฐ๋ฅธ ์ด๋ฏธ์ง€ ์œ„์น˜ ์กฐ์ •

    • ๋””ํ…Œ์ผ ํ™”๋ฉด.. ๋„๋Œ€์ฒด ์–ด๋–ป๊ฒŒ ๊ตฌํ˜„ํ•  ์ˆ˜ ์žˆ์„๊นŒ

      • ๋ฌธ์ œ1: ์ƒ์„ธํ™”๋ฉด ๋ทฐ๊ฐ€ ์ „๋ถ€ ๋‚ด๋ ค์™€ ์žˆ์„๋•Œ๋Š” ๋ฐ”์šด์Šค๋™์ž‘์„ ํ•˜๋ฉด์„œ๋„ ์Šคํฌ๋กค์„ ์˜ฌ๋ฆด๋•Œ๋Š” ์‚ฌ์ง„๊ณผ ๊ฐ™์ด ์˜ฌ๋ผ๊ฐ‘๋‹ˆ๋‹ค. ์ €ํฌ๋Š” ์Šคํฌ๋กค๋ทฐ์˜ ์˜คํ”„์…‹์„ ์‚ฌ์ง„์˜ topConstraint์™€ ๋™๊ธฐํ™” ํ•˜๋Š”์‹์œผ๋กœ ๊ตฌํ˜„ํ–ˆ์Šต๋‹ˆ๋‹ค.
      • ๋ฌธ์ œ2: ๋„ค๋น„๊ฒŒ์ด์…˜ ๋ฐ”๊ฐ€ ์‚ฌ์ง„์˜ ์ค‘๊ฐ„์ •๋„๋ฅผ ๋„˜์–ด๊ฐ€๊ฒŒ๋˜๋ฉด, alpha๊ฐ€ ๋ณ€ํ•˜๋ฉด์„œ ๊ธฐ์กด์˜ ์ƒ‰์œผ๋กœ ๋Œ์•„์˜ต๋‹ˆ๋‹ค. ๊ทธ๋ž˜์„œ navigation Bar์˜ titleView์™€ barTintColor์˜ alpha ๊ฐ’์„ ๋ณ€๊ฒฝํ•˜๋Š” ๋ฐฉ์‹์œผ๋กœ ๊ตฌํ˜„ํ•˜๋ ค ํ–ˆ์Šต๋‹ˆ๋‹ค. ๊ทธ๋Ÿฐ๋ฐ, titleView๋Š” ์ ์šฉ์ด ๋˜์ง€๋งŒ, barTintcolor๋Š” ์ ์šฉ์ด ๋˜์ง€ ์•Š์•˜์Šต๋‹ˆ๋‹ค. navigationController.navigationBar.barTintColor = Color.. stackoverflow์— barTintcolor not working์ด๋ผ ์ณค๋”๋‹ˆ, ์ƒ๊ฐ๋ณด๋‹ค ๋งŽ์€ ๋ถ„๋“ค์ด ์—๋Ÿฌ๋ผ ํ•˜๋Š”๊ฑธ ๋ณด์•˜์Šต๋‹ˆ๋‹ค.
      • ๋ฌธ์ œ3: ์‹ค์ œ ์Šคํƒ€๋ฒ…์Šค์•ฑ์„ ์ผœ์„œ ์ƒ์„ธํ™”๋ฉด์„ ํ‚จ๋‹ค์Œ, ๋„ค๋น„๊ฒŒ์ด์…˜ ๋ฐ”๊ฐ€ ์žˆ์–ด์•ผ๋งŒ ํ• ๊ณณ๋ถ€ํ„ฐ ์Šคํฌ๋กค์„ ํ•˜๋ฉด ์Šคํฌ๋กค์ด ๋ฉ๋‹ˆ๋‹ค. ํ•˜์ง€๋งŒ, ์‹ค์ œ๋กœ ์ €ํฌ๊ฐ€ ๋งŒ๋“ค์–ด๋ณด์•˜์„ ๋•Œ๋Š”, VC์˜ View๊ฐ€ Navigation Controller์˜ ํ•˜์œ„์— ์œ„์น˜ํ•˜๊ฒŒ ๋˜์–ด, ์Šคํฌ๋กค์ด ๋ถˆ๊ฐ€ํ–ˆ์Šต๋‹ˆ๋‹ค. ๋‹ค๋ฅธ ๋ถ€๋ถ„๋ณด๋‹ค ๊ฐ€์žฅ ์–ด๋ ค์› ๋˜ ๋ถ€๋ถ„์ด ์ด ์„ธ๋ถ€ํ™”๋ฉด์ด์—ˆ๋˜ ๊ฒƒ ๊ฐ™์Šต๋‹ˆ๋‹ค. ์ฝ์–ด ์ฃผ์…”์„œ ๊ฐ์‚ฌํ•ฉ๋‹ˆ๋‹ค!
  • API๊ฐ€ ๋ถˆ์นœ์ ˆํ•ด์„œ ํž˜๋“ค์—ˆ์Œ

    • ๊ทธ์—๋”ฐ๋ฅธ ๋น„ํšจ์œจ์  ๊ตฌ์กฐ ๋ฐœ์ƒ
  • ํด๋” ๊ตฌ์กฐ๊ฐ€ ์”ฌ๋ณ„๋กœ ๋˜์–ด ์žˆ์–ด, ํ›„๋ฐ˜๋ถ€์— ์ค‘๋ณต๋˜๋Š” ์ฝ”๋“œ๊ฐ€ ๋ฐœ์ƒ

    • ๋ ˆ์ด์–ด ๋ณ„๋กœ ๊ด€๋ฆฌํ•˜๋Š” ๊ฒƒ์ด ํšจ์œจ์ ์ด๋ผ ์ƒ๊ฐํ•จ
  • Core ๋ฐ์ดํ„ฐ ์ €์žฅ, ๋ถˆ๋Ÿฌ์˜ค๊ธฐ๊ฐ€ ๋น„๋™๊ธฐ ์ฒ˜๋ฆฌ๋ผ ์ฝœ๋ฐฑํ•จ์ˆ˜๊ฐ€ ํ•„์š”ํ–ˆ์Œ

    • ๊ผญ ๊ธฐ์–ตํ•ด์•ผ ํ•  ๋ถ€๋ถ„

Framework

Template Generator