Skip to content

marimorimo/RimoRimo

Folders and files

NameName
Last commit message
Last commit date

Latest commit

ย 
ย 
ย 
ย 
ย 
ย 
ย 
ย 
ย 
ย 
ย 
ย 
ย 
ย 
ย 

Repository files navigation

[๋ฆฌ๋ชจ๋ฆฌ๋ชจ] ๋งˆ๋ฆฌ๋ชจ์™€ ํ•จ๊ป˜ ์„ฑ์žฅํ•˜๋Š” ์ง‘์ค‘ ๋„์šฐ๋ฏธ ์•ฑ

๐Ÿ–‹๏ธ ๋ชฉ์ฐจ

๐Ÿ“ ํ”„๋กœ์ ํŠธ ์†Œ๊ฐœ

๐Ÿ“ ์ฃผ์š” ๊ธฐ๋Šฅ

๐Ÿ“ ๊ธฐ์ˆ  ์Šคํƒ

๐Ÿ“ ๊ธฐ์ˆ ์  ์˜์‚ฌ ๊ฒฐ์ •

๐Ÿ“ ํŠธ๋Ÿฌ๋ธ” ์ŠˆํŒ…

๐Ÿ“ ์—…๋ฐ์ดํŠธ ๊ณ„ํš



Untitled

Untitled


1.ย ํ”„๋กœ์ ํŠธ ์†Œ๊ฐœ

๐Ÿ“ํ”„๋กœ์ ํŠธ ์ด๋ฆ„: ๋ฆฌ๋ชจ๋ฆฌ๋ชจ

๐Ÿ“ํ”„๋กœ์ ํŠธ ์ง„ํ–‰ ๊ธฐ๊ฐ„: 2024.05.28 - 2024.07.04.

๐Ÿ“๊ฐœ๋ฐœ ์—”์ง„ ๋ฐ ์–ธ์–ด: Xcode, Swift

๐Ÿ“https://github.com/marimorimo/RimoRimo

๐Ÿ‘‰ย  ๋ฆฌ๋ชจ๋ฆฌ๋ชจ๋Š” ๋งˆ๋ฆฌ๋ชจ์™€ ํ•จ๊ป˜ ์„ฑ์žฅํ•˜๋ฉฐ ์ง‘์ค‘๋ ฅ์„ ๊ธฐ๋ฅผ ์ˆ˜ ์žˆ๋Š” ์ง‘์ค‘ ๋„์šฐ๋ฏธ ์•ฑ์ž…๋‹ˆ๋‹ค. ๋ชฉํ‘œ ์ง‘์ค‘ ์‹œ๊ฐ„์„ ์„ค์ •ํ•˜๊ณ , ๋ชฉํ‘œ ๋‹ฌ์„ฑ์— ๊ฐ€๊นŒ์›Œ์งˆ ์ˆ˜๋ก ๋งˆ๋ฆฌ๋ชจ๊ฐ€ ์„ฑ์žฅํ•ด์š”! ์ง‘์ค‘ํ• ์ˆ˜๋ก ์„ฑ์žฅํ•˜๋Š” ๋‚˜์™€ ๋งˆ๋ฆฌ๋ชจ, ํ•จ๊ป˜ ๋ชฉํ‘œ๋ฅผ ์ด๋ฃจ์–ด ๋ด์š”.


2๏ธ.ย ์ฃผ์š” ๊ธฐ๋Šฅ

โฐ ์Šคํ†ฑ์›Œ์น˜ - ๋ฆฌ๋ชจ์™€ ํ•จ๊ป˜ ์ง‘์ค‘ ๋ชจ๋“œ ON !

๐Ÿ‘‰ย  ์ง‘์ค‘ ๋ชจ๋“œ ์‹œ์ž‘ํ•˜๊ธฐ/์ค‘๋‹จํ•˜๊ธฐ ๋ฒ„ํŠผ์„ ๋ˆŒ๋Ÿฌ ์Šคํ†ฑ์›Œ์น˜๋ฅผ ์‹คํ–‰ํ•˜๊ณ  ๋ฉˆ์ถœ ์ˆ˜ ์žˆ์–ด์š”.

๐Ÿ‘‰ ์„ค์ •ํ•œ ๋ชฉํ‘œ ์‹œ๊ฐ„ ๋‹ฌ์„ฑ๋ฅ ์— ๋”ฐ๋ผ ๋งˆ๋ฆฌ๋ชจ๊ฐ€ ๋‹จ๊ณ„ ๋ณ„๋กœ ์„ฑ์žฅํ•ด์š”. 5๋‹จ๊ณ„์—์„œ๋Š” ํ”„๋กœํ•„์—์„œ ์„ค์ •ํ•œ ๋งˆ๋ฆฌ๋ชจ๊ฐ€ ๋‚˜ํƒ€๋‚˜์š”.












๐Ÿ“† ์บ˜๋ฆฐ๋” - ๋งค์ผ์˜ ์ง‘์ค‘ ์‹œ๊ฐ„๊ณผ ๋งˆ๋ฆฌ๋ชจ๋ฅผ ํ™•์ธํ•ด์š”.

๐Ÿ‘‰ย  ๋‚ ๋งˆ๋‹ค ์„ฑ์žฅํ•œ ๋งˆ๋ฆฌ๋ชจ์˜ ๋ชจ์Šต์„ ์บ˜๋ฆฐ๋”์—์„œ ํ™•์ธํ•  ์ˆ˜ ์žˆ์–ด์š”.

๐Ÿ‘‰ย  ์บ˜๋ฆฐ๋”์—์„œ ์›ํ•˜๋Š” ๋‚ ์งœ๋ฅผ ์„ ํƒํ•˜๋ฉด ์„ ํƒํ•œ ๋‚ ์งœ์˜ ์ง‘์ค‘ ์‹œ๊ฐ„, ๋งˆ๋ฆฌ๋ชจ ์ƒํƒœ, ๋ฉ”๋ชจ๋ฅผ ํ™•์ธํ•  ์ˆ˜ ์žˆ์–ด์š”.







โ˜‘๏ธ ํˆฌ๋‘๋ฆฌ์ŠคํŠธ -ย ์˜ค๋Š˜ ํ•˜๋ฃจ ํ•ด์•ผ ํ•  ์ผ๋“ค์„ ์ž‘์„ฑํ•˜๊ณ  ๊ด€๋ฆฌํ•  ์ˆ˜ ์žˆ์–ด์š”.

๐Ÿ‘‰ย  ์˜ค๋Š˜ ํ•ด์•ผ ํ•  ์ผ๋“ค์„ ๊ธฐ๋กํ•˜๊ณ  ์™„๋ฃŒ ์—ฌ๋ถ€๋ฅผ ํ‘œ์‹œํ•  ์ˆ˜ ์žˆ์–ด์š”.

๐Ÿ‘‰ย  ์บ˜๋ฆฐ๋”์—์„œ ์›ํ•˜๋Š” ๋‚ ์งœ๋ฅผ ์„ ํƒํ•˜๊ณ  ํ•ด๋‹น ๋‚ ์งœ์˜ ํˆฌ๋‘๋ฆฌ์ŠคํŠธ๋ฅผ ํ™•์ธํ•  ์ˆ˜ ์žˆ์–ด์š”.









๐Ÿค“ ๋งˆ์ดํŽ˜์ด์ง€ - ๋‚ด ์ •๋ณด, ๋ชฉํ‘œ ์‹œ๊ฐ„๊ณผ D-Day, ์ง€๋‚œ 30์ผ ๊ฐ„ ๋ชจ์€ ๋งˆ๋ฆฌ๋ชจ๋ฅผ ํ™•์ธํ•  ์ˆ˜ ์žˆ์–ด์š”.

๐Ÿ‘‰ย  ๋‚ด ๋‹‰๋„ค์ž„๊ณผ ์ด๋ฉ”์ผ(์•„์ด๋””)๋ฅผ ํ™•์ธํ•  ์ˆ˜ ์žˆ์–ด์š”.

๐Ÿ‘‰ย  ๋ชฉํ‘œ ์ง‘์ค‘ ์‹œ๊ฐ„๊ณผ D-Day ์ผ์ • ๋ฐ ๋‚จ์€ ์ผ์ˆ˜๋ฅผ ํ™•์ธํ•  ์ˆ˜ ์žˆ์–ด์š”.

๐Ÿ‘‰ย  โ€์ตœ๊ทผ ์„ฑ์žฅํ•œ ๋งˆ๋ฆฌ๋ชจ ๋ณด๊ธฐโ€ ๋ฒ„ํŠผ์„ ๋ˆŒ๋Ÿฌ ์ง€๋‚œ 30์ผ ๊ฐ„ ๋ชจ์€ ๋งˆ๋ฆฌ๋ชจ๋“ค์„ ํ™”๋ฉด์„ ํ„ฐ์น˜ํ•˜๋ฉฐ ์• ๋‹ˆ๋ฉ”์ด์…˜๊ณผ ํ•จ๊ป˜ ํ™•์ธํ•  ์ˆ˜ ์žˆ์–ด์š”.


















โš™๏ธ ํ”„๋กœํ•„ ์ˆ˜์ • ํŽ˜์ด์ง€ -ย ํ”„๋กœํ•„ ์ด๋ฏธ์ง€, ๋‹‰๋„ค์ž„, ๋ชฉํ‘œ ์ง‘์ค‘ ์‹œ๊ฐ„, D-Day ์ผ์ •์„ ์„ค์ •ํ•  ์ˆ˜ ์žˆ์–ด์š”.

๐Ÿ‘‰ย  ํ”„๋กœํ•„์—์„œ ์„ค์ •ํ•œ ์ด๋ฏธ์ง€๋Š” ๋งˆ์ดํŽ˜์ด์ง€ ๋ฐ ์Šคํ†ฑ์›Œ์น˜ ํŽ˜์ด์ง€์—์„œ ํ™•์ธํ•  ์ˆ˜ ์žˆ์–ด์š”.

๐Ÿ‘‰ย  ๋‹‰๋„ค์ž„์„ ์ˆ˜์ •ํ•  ์ˆ˜ ์žˆ์–ด์š”.

๐Ÿ‘‰ย  ๋ชฉํ‘œ ์ง‘์ค‘ ์‹œ๊ฐ„์„ ์„ค์ •ํ•  ์ˆ˜ ์žˆ์–ด์š”. ๋ชฉํ‘œ ์‹œ๊ฐ„์„ ๋‹ฌ์„ฑํ•˜๋ฉด ๋ฉ”์ธ ํŽ˜์ด์ง€์— ํ”„๋กœํ•„ ์ด๋ฏธ์ง€๋กœ ์„ค์ •ํ•œ ๋งˆ๋ฆฌ๋ชจ๊ฐ€ ๋‚˜ํƒ€๋‚˜์š”.

๐Ÿ‘‰ย  D-Day ์ผ์ • ์ด๋ฆ„๊ณผ ๋‚ ์งœ๋ฅผ ์„ ํƒํ•  ์ˆ˜ ์žˆ์–ด์š”.
















๐Ÿ’ก ์œ„์ ฏ - D-Day ์ผ์ •๊ณผ ํˆฌ๋‘๋ฆฌ์ŠคํŠธ๋ฅผ ํ™•์ธํ•  ์ˆ˜ ์žˆ์–ด์š”.

๐Ÿ‘‰ย  ๋ผ์ดํŠธ ๋ชจ๋“œ์™€ ๋‹คํฌ ๋ชจ๋“œ ์„ค์ •์— ๋”ฐ๋ผ ์ƒ‰์ƒ์ด ๋‹ฌ๋ผ์ ธ์š”.

๐Ÿ‘‰ย  ์ผ์ •์ด ๋‹ค๊ฐ€์˜ฌ์ˆ˜๋ก ํ”„๋กœ๊ทธ๋ ˆ์Šค ๋ฐ”๊ฐ€ ์ฑ„์›Œ์ ธ์š”.

๐Ÿ‘‰ย  ์™„๋ฃŒํ•œ ํ•  ์ผ ๋ชฉ๋ก์€ ์œ„์ ฏ์—์„œ ์‚ฌ๋ผ์ ธ์š”.









3.ย ๊ธฐ์ˆ  ์Šคํƒ

๋ฒ”์œ„ ๊ธฐ์ˆ  ์ด๋ฆ„
์˜์กด์„ฑ ๊ด€๋ฆฌ ๋„๊ตฌ SPM
ํ˜•์ƒ ๊ด€๋ฆฌ ๋„๊ตฌ GitHub Git
์•„ํ‚คํ…์ฒ˜ MVC
๋””์ž์ธ ํŒจํ„ด Delegate Singletone
์ธํ„ฐํŽ˜์ด์Šค UIKit SwiftUI
๋ ˆ์ด์•„์›ƒ ๊ตฌ์„ฑ SnapKit Then
์ €์žฅ์†Œ UserDefaults Firebase
์ฝ”๋“œ ์Šคํƒ€์ผ SwiftStyleGuide

4.ย ๊ธฐ์ˆ ์  ์˜์‚ฌ๊ฒฐ์ •

๐Ÿ’ก ๋งˆ์ธ๋“œ๋งต์„ ํ†ตํ•œ ์• ์ž์ผ ๋ฐฉ๋ฒ•๋ก 

%E1%84%87%E1%85%B3%E1%84%85%E1%85%A9%E1%84%89%E1%85%A7_%E1%84%86%E1%85%A1%E1%84%8B%E1%85%B5%E1%86%AB%E1%84%83%E1%85%B3%E1%84%86%E1%85%A2%E1%86%B8

๐Ÿ’ก ์•„ํ‚คํ…์ณ - MVC

๐Ÿ’ฌ MVC ์„ ํƒ ์ด์œ ?

๊ฐ„๋‹จํ•˜๊ณ  ์ง๊ด€์ ์œผ๋กœ ๋ฐ์ดํ„ฐ ํ๋ฆ„์„ ๊ตฌ๋ถ„ํ•  ์ˆ˜ ์žˆ์–ด ๋น ๋ฅธ ๊ฐœ๋ฐœ์— ์ ํ•ฉํ•˜๊ธฐ ๋•Œ๋ฌธ์— ์„ ํƒํ•˜๊ฒŒ ๋˜์—ˆ์Šต๋‹ˆ๋‹ค.

๐Ÿ™Œย ์ ์šฉ

Model

Untitled 9

View

Untitled 10

Controller

Untitled 11

5. ํŠธ๋Ÿฌ๋ธ” ์ŠˆํŒ…

๐ŸฅŠ ๋ฉ”์ธ ํŽ˜์ด์ง€

  • ๋ฉ”์ธ ํŽ˜์ด์ง€

    ๋ฌธ์ œ์  ํ•ด๊ฒฐ ๋ฐฉ์•ˆ
    ๋‹ค๋ฅธ ํŽ˜์ด์ง€ ์ด๋™ ํ›„ ๋งˆ๋ฆฌ๋ชจ ์• ๋‹ˆ๋ฉ”์ด์…˜์ด ์‹คํ–‰๋˜์ง€ ์•Š๋Š” ๋ฌธ์ œ ์ด ๋ฌธ์ œ๋กœ ๊ตฌํ˜„ ์ดˆ๊ธฐ๋ถ€ํ„ฐ ์• ๋ฅผ ๋จน์—ˆ๋Š”๋ฐ ํ•ด๊ฒฐํ•˜๊ณ ์ž ์˜จ๊ฐ– ์ƒ๋ช…์ฃผ๊ธฐ๋ฅผ ๋‹ค ์‚ฌ์šฉํ•ด๋ณด๊ณ  ํŠœํ„ฐ๋‹˜๋„ ์ฐพ์•„๊ฐ€ ๋ณด๊ณ  ํ–ˆ์ง€๋งŒ ํ•ด๊ฒฐ๋˜์ง€ ์•Š๊ณ  ์žˆ์—ˆ๋‹ค. ์ดํ›„, ๊ฐ™์ด ๊ณต๋ถ€๋ฅผ ํ•˜๋Š” ๋ถ„๊ป˜ ์ด ๋ฌธ์ œ์— ๋Œ€ํ•ด ์กฐ์–ธ์„ ๊ตฌํ–ˆ๋Š”๋ฐ ์• ๋‹ˆ๋ฉ”์ด์…˜์„ ๋ณ„๋„์˜ ํŒŒ์ผ๋กœ ๋ถ„๋ฆฌํ•ด์„œ ์‹œ์ž‘์ ๊ณผ ๋์ ์„ ๋งž์ถ”์–ด ๊ตฌํ˜„ํ•ด ๋ณด๋ผ๋Š” ์กฐ์–ธ์„ ๋“ฃ๊ณ  ์ด๋ฒˆ ํ”ผ๋“œ๋ฐฑ ์ˆ˜์ • ์‹œ ๋ฐ˜์˜ํ•ด ๋ณด์•˜๋‹ค. ์ฒ˜์Œ์—๋Š” UIView.animate๋ฅผ ์‚ฌ์šฉํ•ด์„œ ๊ตฌํ˜„ํ–ˆ๋Š”๋ฐ, UIView.animate์€ UIView์˜ ์• ๋‹ˆ๋ฉ”์ด์…˜ API๋กœ ์• ๋‹ˆ๋ฉ”์ด์…˜ ์ƒํƒœ๋ฅผ ๊ด€๋ฆฌ๊ฐ€ ์ ์ ˆํ•˜์ง€ ์•Š์„ ๊ฒฝ์šฐ ์ค‘๊ฐ„์— View๊ฐ€ ์‚ฌ๋ผ์ง€๊ฑฐ๋‚˜, ์ƒํƒœ๊ฐ€ ์ดˆ๊ธฐํ™”๋˜์ง€ ์•Š๋Š” ๋ฌธ์ œ๊ฐ€ ๋ฐœ์ƒํ•  ์ˆ˜ ์žˆ๋‹ค๋Š” ๋ฌธ์ œ์ ์ด ์žˆ์—ˆ๋‹ค. UIView.animate๋ฅผ CABasicAnimation์œผ๋กœ ๋ณ€๊ฒฝํ•˜์—ฌ ์• ๋‹ˆ๋ฉ”์ด์…˜์„ ์ถ”๊ฐ€ํ•ด ๋ดค๋‹ค. CABasicAnimation์— ๊ฒฝ์šฐ ๋…๋ฆฝ์ ์ธ ์• ๋‹ˆ๋ฉ”์ด์…˜ ์ฒ˜๋ฆฌ๊ฐ€ ๊ฐ€๋Šฅํ•ด์„œ ์• ๋‹ˆ๋ฉ”์ด์…˜์ด UIView์˜ ์ƒํƒœ์™€ ๋ณ„๊ฐœ๋กœ ์ž‘๋™ํ•˜๊ฒŒ ๋˜๊ณ , ํ‚ค๋ฅผ ์‚ฌ์šฉํ•ด์„œ ์• ๋‹ˆ๋ฉ”์ด์…˜์„ ์ถ”๊ฐ€/์‚ญ์ œํ•  ์ˆ˜ ์žˆ๋‹ค. ๊ทธ๋ ‡๊ธฐ ๋•Œ๋ฌธ์— ์• ๋‹ˆ๋ฉ”์ด์…˜ ์ƒํƒœ๋ฅผ ๋ณด๋‹ค ๋ช…ํ™•ํ•˜๊ฒŒ ๊ด€๋ฆฌ ํ•  ์ˆ˜ ์žˆ๊ฒŒ ๋˜์–ด ๋‹ค๋ฅธ ํŽ˜์ด์ง€๋ฅผ ์ด๋™ํ–ˆ๋‹ค ๋Œ์•„์™€๋„ ์• ๋‹ˆ๋ฉ”์ด์…˜์ด ๋ฉˆ์ถ”์ง€ ์•Š๊ฒŒ ๊ตฌํ˜„ํ•  ์ˆ˜ ์žˆ์—ˆ๋‹ค.
    Timer๋ฅผ ์‹œ์ž‘ํ•˜๋ฉด Background์— ๋ฒ„๋ธ” ์• ๋‹ˆ๋ฉ”์ด์…˜์ด ๋ฌด์ˆ˜ํžˆ ๋งŽ์•„์ง€๋Š” ๋ฌธ์ œ ๋ฉ”์ธ ํŽ˜์ด์ง€๋ฅผ View์™€ Controller๋กœ ๋ถ„๋ฆฌํ•˜๋ฉฐ ๊ตฌํ˜„ํ•˜๋Š” ๋„์ค‘ Timer๋ฅผ ์‹œ์ž‘ํ•˜๋ฉด Background ์• ๋‹ˆ๋ฉ”์ด์…˜์ธ ๋ฒ„๋ธ”์ด ์—„์ฒญ๋‚˜๊ฒŒ ๋Š˜์–ด๋‚˜๋Š” ๋ฌธ์ œ๊ฐ€ ๋ฐœ์ƒํ–ˆ๋Š”๋ฐ, viewDidLayoutSubviews๋Š” ViewController๊ฐ€ ๋ ˆ์ด์•„์›ƒ์„ ๋‹ค ๊ทธ๋ฆฐ ํ›„์— ํ˜ธ์ถœ๋˜๋Š”๋ฐ ์ด๋•Œ setupBubbleEmitter๋ฅผ ํ˜ธ์ถœํ•˜๊ฒŒ ๋˜๋ฉด ๊ทธ ์‹œ์ ์— View์˜ ๋ ˆ์ด์•„์›ƒ์ด ์™„์ „ํžˆ ์™„๋ฃŒ๋˜์ง€ ์•Š๊ธฐ ๋•Œ๋ฌธ์— View์˜ ํฌ๊ธฐ๋‚˜ ์œ„์น˜๋“ฑ์ด ์˜ฌ๋ฐ”๋ฅด๊ฒŒ ์„ค์ •๋˜์ง€ ์•Š์•˜๋˜ ๊ฒƒ ๊ฐ™๋‹ค. ๊ทธ๋ž˜์„œ View๋ฅผ layoutSubviews๋ฅผ ํ†ตํ•ด ๊ฐœ๋ณ„์ ์œผ๋กœ MainViewController์— ํ˜ธ์ถœํ•˜๋Š” ์‹์œผ๋กœ ๋ณ€๊ฒฝํ•˜๋‹ˆ ๋ฌธ์ œ๊ฐ€ ํ•ด๊ฒฐ๋˜์—ˆ๋‹ค.
    ์ž์ •์ด ๋˜๋ฉด ์‹คํ–‰์ค‘์ธ ํƒ€์ด๋จธ๊ฐ€ ๋ฆฌ์…‹๋˜๋„๋ก ํ•ด์•ผ ํ•˜๋Š”๋ฐ ๋ฐฑ๊ทธ๋ผ์šด๋“œ์— ์žˆ์„๋•Œ ์ ์šฉ๋˜์ง€ ์•Š๋Š” ๋ฌธ์ œ ์ž์ •์„ ๊ธฐ์ค€์œผ๋กœ ํƒ€์ด๋จธ๋ฅผ ์„ค์ •ํ•˜๊ณ  ๋งค์ผ ํ•œ ๋ฒˆ์”ฉ ๋ฆฌ์…‹ํ•˜๋„๋ก ํ•˜๋Š” ๋ฐฉ์‹์„ ์‹œ๋„ํ•ด๋ณด๊ณ ์ž scheduleMidnightTimer ๋ฉ”์„œ๋“œ๋ฅผ ์‚ฌ์šฉํ•ด ์ž์ •์— ํƒ€์ด๋จธ๋ฅผ ์„ค์ •ํ•˜๊ณ , ์ž์ • ์ดํ›„ 86400์ดˆ(24์‹œ๊ฐ„)๋งˆ๋‹ค ํƒ€์ด๋จธ๊ฐ€ ๋ฐ˜๋ณต ์‹คํ–‰๋˜๋„๋ก ํ•˜์—ฌ ๋ฆฌ์…‹ ์ž‘์—…์ด ์‹คํ–‰๋˜๋„๋ก ํ–ˆ๋‹ค. checkAndResetTimerIfNeeded ๋ฉ”์„œ๋“œ๋ฅผ ํ†ตํ•ด ํ˜„์žฌ ๋‚ ์งœ์™€ ์ €์žฅ๋œ ์‹œ์ž‘ ๋‚ ์งœ๋ฅผ ๋น„๊ตํ•˜๊ณ , ๋ถˆ์ผ์น˜ ์‹œ ๋ฐ์ดํ„ฐ๋ฅผ ๋ฆฌ์…‹ํ•˜๊ณ  UI๋ฅผ ์—…๋ฐ์ดํŠธํ•˜๋Š”๋ฐ, ์ด๋ฅผ ํ†ตํ•ด ๋ฐฑ๊ทธ๋ผ์šด๋“œ ์ž‘์—…์˜ ์ œํ•œ์„ ์šฐํšŒํ•˜๊ณ  ํƒ€์ด๋จธ๊ฐ€ ์ •ํ™•ํ•œ ์‹œ๊ฐ„์— ์‹คํ–‰๋˜๋„๋ก ํ–ˆ๋‹ค.
๐ŸฅŠ ์บ˜๋ฆฐ๋” ํŽ˜์ด์ง€
  • ์บ˜๋ฆฐ๋” ํŽ˜์ด์ง€

    ๋ฌธ์ œ์  ํ•ด๊ฒฐ ๋ฐฉ์•ˆ
    ๊ฐ ๋‚ ์งœ์— ๋งž๋Š” ๋งˆ๋ฆฌ๋ชจ ์ด๋ฏธ์ง€๊ฐ€ ์บ˜๋ฆฐ๋”์— ๋‚˜ํƒ€๋‚˜๊ฒŒ ๋˜์–ด์žˆ๋Š”๋ฐ 1- 4๋‹จ๊ณ„๊นŒ์ง€๋Š” ๋‹ค ๊ฐ™์€ ๋งˆ๋ฆฌ๋ชจ ์ด๋ฏธ์ง€์ง€๋งŒ ์ตœ์ข… ์„ฑ์žฅ ๋งˆ๋ฆฌ๋ชจ๋Š” ํ”„๋กœํ•„์—์„œ ์ด๋ฏธ์ง€ ์„ ํƒ์ด ๋˜์–ด์žˆ๋Š” ๋งˆ๋ฆฌ๋ชจ ์ด๋ฏธ์ง€๋ฅผ ๋ถˆ๋Ÿฌ์™€์•ผ ํ–ˆ๋‹ค. ๊ทธ๋ž˜์„œ ๋งˆ์ง€๋ง‰ ๋ถ€๋ถ„์„ ์บ˜๋ฆฐ๋” ์…€์— ๋„์šฐ๋Š” ๋ฐ ์žˆ์–ด ์ด๋ฏธ์ง€๊ฐ€ ๋‚˜ํƒ€๋‚˜์ง€ ์•Š๋Š”๋‹ค๋Š” ๋ฌธ์ œ๊ฐ€ ๋ฐœ์ƒํ–ˆ๋‹ค. ํŒŒ์ด์–ด ๋ฒ ์ด์Šค์—์„œ profile-image๋ผ๋Š” ์ด๋ฆ„์œผ๋กœ ์ตœ์ข… ๋งˆ๋ฆฌ๋ชจ์˜ ์ด๋ฏธ์ง€๋ฅผ ์บ˜๋ฆฐ๋”์— ๋„์› ์—ˆ๋Š”๋ฐ userInfo ์ปฌ๋ ‰์…˜์—์„œ ๊ฐ€์ ธ์˜จ ๊ฒƒ์ด ์•„๋‹ˆ๋ผ ๋‚ด๊ฐ€ study-session์ด๋ผ๋Š” ์ปฌ๋ ‰์…˜์—์„œ ํ”„๋กœํ•„์„ ๋ถˆ๋Ÿฌ์˜ค๊ณ  ์žˆ์—ˆ๋‹ค. ๊ทธ๋ž˜์„œ userInfo์—์„œ profile ์ด๋ฏธ์ง€๋ฅผ ๋ถˆ๋Ÿฌ์˜ฌ ์ˆ˜ ์žˆ๋„๋ก ์—ฐ๊ฒฐ ๋ถ€๋ถ„์„ ๋ณ€๊ฒฝํ•ด ์ฃผ์—ˆ๋‹ค.
๐ŸฅŠ ํˆฌ๋‘๋ฆฌ์ŠคํŠธ ํŽ˜์ด์ง€
  • ํˆฌ๋‘๋ฆฌ์ŠคํŠธ ํŽ˜์ด์ง€

    ๋ฌธ์ œ์  ํ•ด๊ฒฐ ๋ฐฉ์•ˆ
    ํˆฌ๋‘ ์…€ ํ„ฐ์น˜ ์‹œ ํˆฌ๋‘๊ฐ€ ์ˆ˜์ •๋˜๋Š”๋ฐ ์ด๋•Œ ํ‚ค๋ณด๋“œ๊ฐ€ ์˜ฌ๋ผ์˜ค๋Š” ๊ฒƒ๊นŒ์ง€ ์ƒ๊ฐํ•˜์ง€ ๋ชปํ•ด์„œ ํƒญ ์ œ์Šค์ฒ˜๋ฅผ ๋งจ ๋งˆ์ง€๋ง‰์— ์ฒ˜๋ฆฌํ•˜๊ฒŒ ๋˜์—ˆ๋‹ค. ํƒญ ์ œ์Šค์ฒ˜๋ฅผ ๋งจ ๋งˆ์ง€๋ง‰์— ์–น์—ˆ๋”๋‹ˆ ์…€ ์ด ํ„ฐ์น˜ ๋˜์ง€๋„ ์•Š๊ณ  ์ˆ˜์ • ๊ธฐ๋Šฅ๋„ ๋จนํ†ต์ด ๋˜๋Š” ๋ฌธ์ œ๊ฐ€ ์žˆ์—ˆ๋‹ค. ์›์ธ์€ ํƒญ ์ œ์Šค์ฒ˜๋ฅผ ์ „์ฒด ํ™”๋ฉด์˜ ๋งจ ์œ„์— ์–น์—ˆ๋‹ค๋Š” ์ ์ด์—ˆ๊ณ , ๊ทธ๋ž˜์„œ ํ…Œ์ด๋ธ” ๋ทฐ๋ฅผ ์ œ์™ธํ•œ ํ™”๋ฉด์„ ํ„ฐ์น˜ ์‹œ ํ‚ค๋ณด๋“œ๊ฐ€ ๋‚ด๋ ค๊ฐ€๋„๋ก ์„ค์ •์„ ํ–ˆ๋Š”๋ฐ ์‹คํŒจํ–ˆ๋‹ค. ํƒญ ์ œ์Šค์ฒ˜๋ฅผ ํ™”๋ฉด์˜ ๋งจ ๋’ค์— ์–น๋Š” ๋ฐฉ๋ฒ•์ด ์•„๋‹Œ ํ…Œ์ด๋ธ” ๋ทฐ๊ฐ€ ์—†๋Š” ๋ถ€๋ถ„์— ๋ทฐ๋ฅผ ํ™”๋ฉด ํฌ๊ธฐ์— ๋งž์ถฐ ๋งŒ๋“ค์—ˆ๊ณ  ๋ทฐ๊ฐ€ ๋“ค์–ด๊ฐ€์•ผ ํ•  ๊ณณ์— ์žˆ๋Š” ๋ฒ„ํŠผ๋“ค์˜ ์•ž์— ์ฝ”๋“œ๋ฅผ ์ ์–ด์ค˜์„œ ๋ฒ„ํŠผ๋“ค๋„ ์ œ๋Œ€๋กœ ๋™์ž‘ํ•˜๋„๋ก ๋งŒ๋“ค์–ด์คฌ๋‹ค.
  • ํˆฌ๋‘๋ฆฌ์ŠคํŠธ ์บ˜๋ฆฐ๋” ํŒ์—… ํŽ˜์ด์ง€

    ๋ฌธ์ œ์  ํ•ด๊ฒฐ ๋ฐฉ์•ˆ
    ๊ธฐ์กด์—๋Š” ์•ฑ ์ข…๋ฃŒ ํ›„ ์žฌ์ ‘์† ์‹œ์— ์‚ฌ์šฉ์ž๊ฐ€ ๋งˆ์ง€๋ง‰์œผ๋กœ ์„ ํƒํ•œ ๋‚ ์งœ ๋œจ๋„๋ก ๊ตฌํ˜„ํ–ˆ๋Š”๋ฐ, ํˆฌ๋‘๋ฆฌ์ŠคํŠธ ํŽ˜์ด์ง€์—์„œ ์•ฑ ์ข…๋ฃŒ ํ›„ ์žฌ์ ‘์† ์‹œ ์˜ค๋Š˜ ๋‚ ์งœ๋ฅผ ํ‘œ์‹œํ•˜๋„๋ก ์ˆ˜์ •ํ•˜๋ฉด์„œ ๋™์ผํ•˜๊ฒŒ ์ˆ˜์ •์ด ํ•„์š”ํ–ˆ๋‹ค.
    ์•ฑ์„ ์ข…๋ฃŒํ•˜์ง€ ์•Š์•˜์„ ๋•Œ๋Š” ์‚ฌ์šฉ์ž๊ฐ€ ๋งˆ์ง€๋ง‰ ์„ ํƒํ•œ ๋‚ ์งœ๊ฐ€, ์•ฑ์„ ์ข…๋ฃŒํ•˜๊ณ  ์žฌ์ ‘์† ์‹œ์—๋Š” ์˜ค๋Š˜ ๋‚ ์งœ๊ฐ€ ๋œจ๋„๋ก ์ˆ˜์ •ํ•ด์•ผ ํ–ˆ๋Š”๋ฐ, ์•ฑ์„ ์ข…๋ฃŒํ•˜์ง€ ์•Š๊ณ  ๋ทฐ๋ฅผ ๋‹ซ์•˜๋‹ค๊ฐ€ ์—ด๋ฉด ์˜ค๋Š˜ ๋‚ ์งœ๊ฐ€ ๋‚˜ํƒ€๋‚˜๋Š” ๋ฌธ์ œ๊ฐ€ ์žˆ์—ˆ๋‹ค. ๊ธฐ์กด์—๋Š” ๋‚ ์งœ๋ฅผ ์„ ํƒํ•˜๊ณ  ํ™•์ธ ๋ฒ„ํŠผ ๋ˆŒ๋Ÿฌ์„œ Firebase์— Date ์ •๋ณด๋ฅผ ํˆฌ๋‘๋ฆฌ์ŠคํŠธ ํŽ˜์ด์ง€๋กœ ๋„˜๊ฒจ์ฃผ๊ณ , ๋ทฐ๊ฐ€ ๋กœ๋“œ ๋  ๋•Œ๋งˆ๋‹ค Firebase์— ์ €์žฅ๋œ ์„ ํƒ ๋‚ ์งœ๋ฅผ ๋ถˆ๋Ÿฌ์™€์„œ ํ‘œ์‹œํ•˜๋„๋ก ๊ตฌํ˜„ํ–ˆ๋Š”๋ฐ,
    ํˆฌ๋‘๋ฆฌ์ŠคํŠธ ํŽ˜์ด์ง€์— ๋‚˜ํƒ€๋‚˜ ์žˆ๋Š” ๋‚ ์งœ์˜ string ๊ฐ’์„ ํˆฌ๋‘๋ฆฌ์ŠคํŠธ ์บ˜๋ฆฐ๋” ํŒ์—… ํŽ˜์ด์ง€๋กœ ๋ถˆ๋Ÿฌ์™€์„œ date ๊ฐ’์œผ๋กœ ๋ณ€ํ™˜ํ•ด ํ•ด๋‹น ๋‚ ์งœ์— ํ‘œ์‹œํ•˜๋„๋ก ์ˆ˜์ •ํ–ˆ๋‹ค.
๐ŸฅŠ ๋งˆ์ด ํŽ˜์ด์ง€ |์ตœ์ข… ๋งˆ๋ฆฌ๋ชจ๋ฅผ ์‚ฌ์šฉ์ž๊ฐ€ ์„ ํƒํ•œ ๋งˆ๋ฆฌ๋ชจ๋กœ ๋ณด์—ฌ์ค˜์•ผ ํ•˜๋Š”๋ฐ ์ด๋ฏธ์ง€(URL)๋กœ ๋ณ€ํ™˜ํ•˜์—ฌ ์ €์žฅํ•œ ๋ฐ์ดํ„ฐ๋ฅผ ๋ณ€์ˆ˜์— ๋‹ค์‹œ ์ €์žฅํ•˜์—ฌ ๋ณด์—ฌ์ฃผ๋ ค๊ณ  ํ•˜๋‹ˆ ์ œ๋Œ€๋กœ ์ด๋ฏธ์ง€๊ฐ€ ๋ณด์ด์ง€ ์•Š๋Š” ์ƒํ™ฉ์ด ๋ฐœ์ƒ|์ฒ˜์Œ๋ถ€ํ„ฐ assets์— ์žˆ๋Š” ์ด๋ฏธ์ง€ ์ด๋ฆ„์„ ์ €์žฅํ•˜๊ณ , ๋ฌธ์ž์—ด๋กœ์„œ ๋ณ€์ˆ˜์— ์ €์žฅํ•˜์—ฌ ๋ณด์—ฌ์ฃผ๋Š” ๋ฐฉ์‹์œผ๋กœ ์ฒ˜๋ฆฌํ–ˆ์Šต๋‹ˆ๋‹ค.| |ํƒ€์ด๋จธ์˜ ์‹œ๊ฐ„๊ณผ ๋งˆ๋ฆฌ๋ชจ์˜ ์‹œ๊ฐ„์„ ๋ณ„๋„๋กœ ๋‘๊ณ  ์„œ๋กœ ์—ฐ๋™ ๋ฐ ๋ฐฑ๊ทธ๋ผ์šด๋“œ์—์„œ๋„ ๋™์ž‘ํ•˜๊ฒŒ ๊ตฌํ˜„ |์ƒํƒœ๋ฅผ UserDefaults์— ์ €์žฅํ•˜๋Š” ๋ฐฉ์‹์œผ๋กœ ํ•ด๊ฒฐ| ๐ŸฅŠ ์„ค์ • ํŽ˜์ด์ง€
  • ํ”„๋กœํ•„ ์ˆ˜์ • ํŽ˜์ด์ง€

    ๋ฌธ์ œ์  ํ•ด๊ฒฐ ๋ฐฉ์•ˆ
    D-Day ๋‚ ์งœ๋ฅผ ์„ ํƒํ•˜๊ณ  ํ˜„์žฌ ๋‚ ์งœ๋ถ€ํ„ฐ ์„ ํƒ ๋‚ ์งœ๊นŒ์ง€ ๋‚จ์€ ์ผ์ˆ˜๋ฅผ ๊ณ„์‚ฐํ•ด D-(๋‚จ์€ ์ผ์ˆ˜)๋กœ Firebase์— ์ €์žฅํ•˜๋„๋ก ๊ตฌํ˜„ํ–ˆ๋Š”๋ฐ, ์„ ํƒ ๋‚ ์งœ๊ฐ€ ์ง€๋‚ฌ์„ ๊ฒฝ์šฐ์— D-(์ง€๋‚œ ์ผ์ˆ˜)๋กœ ํ‘œ์‹œ๋˜๋Š” ๋ฌธ์ œ๊ฐ€ ์žˆ์—ˆ๋‹ค. ์˜ˆ์™ธ์ฒ˜๋ฆฌ๋ฅผ ํ†ตํ•ด D-Day ๋‚ ์งœ๊ฐ€ ์˜ค๋Š˜๋ณด๋‹ค ์ด์ „ ๋‚ ์งœ์ผ ๊ฒฝ์šฐ D+(์ง€๋‚œ ์ผ์ˆ˜)๋กœ ํ‘œ์‹œ๋˜๋„๋ก ์ˆ˜์ •ํ–ˆ๋‹ค.
    D-Day ์ผ์ˆ˜๋ฅผ ์˜ค๋Š˜ ๋‚ ์งœ๋ฅผ ํฌํ•จํ•  ๊ฒฝ์šฐ ๊ณ„์‚ฐ ์ผ์ž์—์„œ 1์„ ๋”ํ•ด targetDate๋กœ Firebase ์ €์žฅํ•ด ๋‹ค๋ฅธ ๋ทฐ์—์„œ ๋‚จ์€ ์ผ์ž๋ฅผ ํŽธํ•˜๊ฒŒ ๊ณ„์‚ฐํ•  ์ˆ˜ ์žˆ๋„๋ก ํ–ˆ๋Š”๋ฐ, ์ด ๋ฐ์ดํ„ฐ๋ฅผ ๊ทธ๋Œ€๋กœ D-Day ์ผ์ž ์„ ํƒ ์‹œ ๋‚˜ํƒ€๋‚˜๋Š” ๋‚ ์งœ์˜ ๊ฐ’์œผ๋กœ ๋ฐ›์•„์˜ค๋‹ˆ, ์‚ฌ์šฉ์ž ์„ ํƒ ๋‚ ์งœ์—์„œ ํ•˜๋ฃจ ๋”ํ•ด์ง„ ๋‚ ์งœ๋กœ ํ‘œ์‹œ๋˜๋Š” ๋ฌธ์ œ๊ฐ€ ์žˆ์—ˆ๋‹ค. ํŒŒ์ด์–ด๋ฒ ์ด์Šค์—์„œ targetDate ๊ฐ’์„ ๋ฐ›์•„์˜ฌ ๋•Œ ์˜ค๋Š˜ ๋‚ ์งœ๋ฅผ ํฌํ•จํ•  ๊ฒฝ์šฐ์—๋Š” targetDate ๊ฐ’์—์„œ 1์„ ๋นผ์„œ ๊ธฐ์กด์— ์„ ํƒํ•œ ๋‚ ์งœ๋ฅผ ๋ฐ›์•„์˜ฌ ์ˆ˜ ์žˆ๋„๋ก ์ฝ”๋“œ๋ฅผ ์ˆ˜์ •ํ–ˆ๋‹ค.
๐ŸฅŠ ์œ„์ ฏ

iOS 17.0+ ์—์„œ ์œ„์ ฏ์˜ ๋ฐฑ๊ทธ๋ผ์šด๋“œ ์ปฌ๋Ÿฌ๊ฐ€ ์ œ๋Œ€๋กœ ์ ์šฉ๋˜์ง€ ์•Š๋Š” ์ด์Šˆ๊ฐ€ ์žˆ์—ˆ์Šต๋‹ˆ๋‹ค. 17.0 ์ด์ƒ์˜ ๋ฒ„์ „์—์„  ๋ถ„๊ธฐ์ฒ˜๋ฆฌ๋ฅผ ํ†ตํ•ด ์ƒˆ๋กœ ์ถ”๊ฐ€๋œ containerBackground๋ฉ”์„œ๋“œ๋ฅผ ์‚ฌ์šฉํ•ด ๋ฐฐ๊ฒฝํ™”๋ฉด์„ ์„ค์ •ํ•ด ํ•ด๊ฒฐํ–ˆ์Šต๋‹ˆ๋‹ค.

6. ์—…๋ฐ์ดํŠธ ๊ณ„ํš

ํŽ˜์ด์ง€ ์—…๋ฐ์ดํŠธ ๋‚ด์šฉ1 ์—…๋ฐ์ดํŠธ ๋‚ด์šฉ2
๋ฉ”์ธ ํŽ˜์ด์ง€ ๋ชฉํ‘œ์‹œ๊ฐ„ ๋‹ฌ์„ฑ ์‹œ ์‚ฌ์šฉ์ž์—๊ฒŒ push ์•Œ๋žŒ์œผ๋กœ ์•ˆ๋‚ดํ•˜๊ธฐ ๊ตฌํ˜„ ํƒ€์ด๋จธ๊ฐ€ ์‹คํ–‰์ค‘์ผ ๋•Œ ์ง„ํ–‰ ์ƒํ™ฉ์„ ์œ„์ ฏ์œผ๋กœ ๋ณด์—ฌ์ฃผ๊ธฐ ๊ตฌํ˜„
์บ˜๋ฆฐ๋” ํŽ˜์ด์ง€ ์…€ ํ„ฐ์น˜ ์‹œ selection effect๋ฅผ ์ ์šฉ
ํˆฌ๋‘๋ฆฌ์ŠคํŠธ ํŽ˜์ด์ง€ ํˆฌ๋‘ ์™„๋ฃŒ ๋ฒ„ํŠผ ํด๋ฆญ ์‹œ ์‹œ๊ฐ์ ์œผ๋กœ ๋” ์ž˜ ๋ณด์ด๋„๋ก ํ…์ŠคํŠธ ํ•„๋“œ์— ์ค‘๊ฐ„ ์ค„ ๋„ฃ๋Š” NSMutableAttributedString์„ ๊ตฌํ˜„
๋งˆ์ด ํŽ˜์ด์ง€
์„ค์ • ํŽ˜์ด์ง€ ํ”„๋กœํ•„ ์„ค์ • ํŽ˜์ด์ง€ ๋งˆ๋ฆฌ๋ชจ ๋””์ž์ธ ๋ณ€๊ฒฝ

About

No description, website, or topics provided.

Resources

Stars

Watchers

Forks

Releases

No releases published

Packages

No packages published

Contributors 4

  •  
  •  
  •  
  •  

Languages