728x90
๋ฐ˜์‘ํ˜•
๋ฐ˜์‘ํ˜•
728x90

์ด์ œ ๊ณง ํŒŒ๋“œ์˜ 3๊ธฐ iOSํŒŒํŠธ๊ฐ€ ์‹œ์‹œ์‹œ์‹œ์ž‘์ด๋‹ค.

์„ธ๋ฏธ๋‚˜๋ฅผ ์œ„ํ•ด OT ์ž๋ฃŒ๋ฅผ ๋‹ค์‹œ ์‚ดํŽด๋ณด๋˜ ์ค‘, ๋ฌธ๋“ ๋ˆ„๊ตฐ๊ฐ€ ์ด๋Ÿฐ ์งˆ๋ฌธ์„ ํ•˜๋ฉด ์–ด์ฉŒ์ง€ ํ•˜๋Š” ์ƒ๊ฐ์ด ๋“ค์—ˆ๋‹ค.

 

Main์ด๋ž‘ Lauch ์ค‘ ์–ด๋””์—์„œ ํ•ด์•ผ๋ผ์š”?

๋‘˜์˜ ์ฐจ์ด๋Š” ๋ญ์ฃ ?

 

.

.

 

์ •ํ™•ํ•˜๊ฒŒ ์•Œ๋ ค์ค˜์•ผ ํ•˜๊ธฐ์— ์ฐพ์•„๋ณด์•˜๋‹ค.

 

๋ฉ€ํ‹ฐ ์Šค๋ ˆ๋“œ๋ฅผ ์›ํ™œํ•˜๊ฒŒ ์ง€์›ํ•˜๊ธฐ ์œ„ํ•ด LauchStoryboard๋Š” Android์˜ splashํ™”๋ฉด ๊ฐ™์€ ํ™”๋ฉด์ด์—ˆ๋‹ค.

๊ทธ๋Ÿฌ๋‹ˆ๊นŒ, LauchStoryboard์— ์Šคํ”Œ๋ž˜์‹œ ํ™”๋ฉด์„ ๋„ฃ์–ด์ฃผ๋ฉด ๋œ๋‹ค๋Š” ๊ฒƒ !

 

.

.

Launch storyboard

 

 

Main storyboard

 

์ด๋ ‡๊ฒŒ ๊ฐ๊ฐ์„ ์ง€์ •ํ•ด์ฃผ์—ˆ๋‹ค.

๊ทธ๋ฆฌ๊ณ  ๋นŒ๋“œ๋ฅผ ํ•˜๋ฉด, ์•„๋งˆ Launch storyboard๋งŒ ๋ณด์—ฌ์งˆ ๊ฒƒ์ด๋‹ค.

 

์ด๊ฑด AppDelegate์—์„œ Launch storyboard๊ฐ€ ๋ณด์—ฌ์งˆ ์‹œ๊ฐ„์„ ์ง€์ •ํ•ด์ฃผ๋ฉด ๋œ๋‹ค.

func application(_ application: UIApplication, didFinishLaunchingWithOptions launchOptions: [UIApplication.LaunchOptionsKey: Any]?) -> Bool {
    // Override point for customization after application launch.
    sleep(1)
    return true
}

 

์ด๋Ÿฐ์‹์œผ๋กœ sleep(1)์„ ์ถ”๊ฐ€ํ•ด์ฃผ๋ฉด, 1์ดˆ ๋’ค Main ํ™”๋ฉด์ด ๋ณด์ด๋Š” ๊ฒƒ์„ ํ™•์ธํ•  ์ˆ˜ ์žˆ๋‹ค.

๋‘ ๋ฒˆ์งธ ํŒŒํŠธ์žฅ์„ ํ•˜๋‹ค ๋ณด๋‹ˆ, ๋ˆˆ์— ๋ณด์ด์ง€ ์•Š๋˜ ๊ฒƒ๋“ค์ด ํ•˜๋‚˜์”ฉ ๋ณด์—ฌ์ง€๊ธฐ ์‹œ์ž‘ํ•œ๋‹ค.

 

.

.

 

์•„์ง ๋ถ€์กฑํ•จ์ด ๋งŽ์€ ๋‚ด๊ฐ€ ํŒŒํŠธ์žฅ์ด๋ผ๋‹ˆ,,

๋” ์—ด์‹ฌํžˆ ํ• ๊ฒŒ์š” ์—ฌ๋Ÿฌ๋ถ„..

 

.

.

 

๋

 

728x90
๋ฐ˜์‘ํ˜•
728x90
๋ฐ˜์‘ํ˜•
728x90

์กธ์—…์ƒ ์„ ๋ฐฐ๋‹˜๊ณผ ์ง„ํ–‰ํ•˜๋Š” ์Šคํ„ฐ๋”” ์ค‘, ์ด์ œ ๋””์ž์ธ ์‹œ์Šคํ…œ์„ ์ ์šฉํ•  ์‹œ์ ์ด ๋˜์—ˆ๋‹ค.

๋ˆ„๊ฐ€ ๋””์ž์ธ ์‹œ์Šคํ…œ์„ ์ ์šฉํ•  ๊ฒƒ์ธ์ง€ ์—ญํ•  ๋ถ„๋ฐฐ๋ฅผ ํ•˜๋Š”๋ฐ, ์•„๋ฌด๋„ ๋‚˜์„œ์ง€ ์•Š์•˜๊ณ ,

๋‚˜๋Š” ์ด์ œ ๋™์•„๋ฆฌ ์ผ์ •๋„ ์–ด๋Š์ •๋„ ๋๋‚˜์„œ ์‹œ๊ฐ„์  ์—ฌ์œ ๊ฐ€ ๋น„๊ต์  ์žˆ์—ˆ๊ธฐ์— ๋‚ด๊ฐ€ ํ•˜๊ฒ ๋‹ค๊ณ  ํ–ˆ๋‹ค.

 

๋””์ž์ธ ์‹œ์Šคํ…œ. ๋‚ด๊ฐ€ ํ•ด์™”๋˜ ๋ฐฉ์‹๋Œ€๋กœ๋ผ๋ฉด ๊ทธ๋ ‡๊ฒŒ ์˜ค๋ž˜๊ฑธ๋ฆฌ์ง€ ์•Š๊ธฐ ๋•Œ๋ฌธ์ด๋‹ค.

ํ•˜์ง€๋งŒ, ์Šคํ„ฐ๋”” ์žฅ ์„ ๋ฐฐ๋‹˜์€ ๋‹ค๋ฅธ ๋ฐฉ์‹์œผ๋กœ ์ถ”์ฒœํ•ด์ฃผ์…จ๋‹ค.

swift gem? ๋ญ๋ผ๊ณ  ํ•˜์…จ๋Š”๋ฐ, ์ž˜ ๊ธฐ์–ต์ด ์•ˆ๋‚œ๋‹ค.

 

๊ทธ๋Ÿฌ๋‹ค๊ฐ€ ์˜ค๋Š˜, ์Šฌ๋ž™ DM์œผ๋กœ ๊นƒํ—ˆ๋ธŒ ๋งํฌ๋ฅผ ํ•˜๋‚˜ ๋ณด๋‚ด์ฃผ์…จ๋‹ค.

ํ•œ์‹œ๊ฐ„ ๋ฐ˜์ •๋„ ์†Œ์š”ํ•˜์—ฌ ํ•œ๋ฒˆ ํ•ด๋ณด๋ผ๊ณ  ํ•˜์…จ๋‹ค.

๋ญ”๊ฐ€ ๋„์ „ ๊ณผ์ œ๋ฅผ ๋ฐ›์€ ๊ฒƒ ๊ฐ™์•„์„œ ์‚ด์ง ์„ค๋ œ๋‹ค.

 

์ง€๊ธˆ๋ถ€ํ„ฐ ๊ณต๋ถ€ ์‹œ-์ž‘ !!

 

https://github.com/mac-cain13/R.swift

 

GitHub - mac-cain13/R.swift: Strong typed, autocompleted resources like images, fonts and segues in Swift projects

Strong typed, autocompleted resources like images, fonts and segues in Swift projects - mac-cain13/R.swift

github.com

 

 

์ด ํŒจํ‚ค์ง€๋Š” ์ž๋™ ์™„์„ฑ์œผ๋กœ ์ด๋ฏธ์ง€, ํฐํŠธ, ์ƒ‰์ƒ ๋“ฑ์„ ์‰ฝ๊ฒŒ ์‚ฌ์šฉํ•  ์ˆ˜ ์žˆ๋Š” ํŒจํ‚ค์ง€์ธ ๊ฒƒ ๊ฐ™๋‹ค.

๊ณต์‹ ๋ฌธ์„œ ์˜ˆ์‹œ๋ฅผ ๊ฐ€์ ธ์˜ค๋ฉด,

์ง€๊ธˆ๊นŒ์ง€ ์‚ฌ์šฉํ–ˆ๋˜ ๋ฐฉ์‹์ด ๋‹ค์Œ๊ณผ ๊ฐ™๋‹ค๋ฉด,

let icon = UIImage(named: "settings-icon")
let font = UIFont(name: "San Francisco", size: 42)
let color = UIColor(named: "indicator highlight")
let viewController = CustomViewController(nibName: "CustomView", bundle: nil)
let string = String(format: NSLocalizedString("welcome.withName", comment: ""), locale: NSLocale.current, "Arthur Dent")

 

ํ•ด๋‹น ํŒจํ‚ค์ง€๋ฅผ ์‚ฌ์šฉํ•˜๋ฉด ์ด๋ ‡๊ฒŒ ์“ธ ์ˆ˜ ์žˆ๋‹ค.

let icon = R.image.settingsIcon()
let font = R.font.sanFrancisco(size: 42)
let color = R.color.indicatorHighlight()
let viewController = CustomViewController(nib: R.nib.customView)
let string = R.string.localizable.welcomeWithName("Arthur Dent")

 

์ด ํŒจํ‚ค์ง€๋Š” Mathijs Kadijk๋ผ๋Š” ๋ถ„์ด 2016๋…„์— ๋ฐœํ‘œํ–ˆ๋‹ค๊ณ  ํ•œ๋‹ค.

๊ทธ๋ฆฌ๊ณ  ์ด๋Ÿฐ ํƒ€์ž…๋“ค์„ ์ง€์›ํ•œ๋‹ค๊ณ  ํ•œ๋‹ค.

 

์ž ๊ทธ๋Ÿผ ์ด์ œ ์‚ฌ์šฉ ๋ฐฉ๋ฒ•์„ ์ •๋ฆฌํ•ด๋ณด์ž!

 

์„ค์น˜ํ•˜๊ธฐ

1. ๋จผ์ € xcode์—์„œ Package Dependencies ํƒญ์— ๋“ค์–ด๊ฐ€ +๋ฅผ ํด๋ฆญํ•œ๋‹ค.

๊ทธ๋ฆฌ๊ณ , github.com/mac-cain13/R.swift (์ด ๋งํฌ ์•„๋‹˜!! https://github.com/mac-cain13/R.swift.git <- ์ด๊ฒŒ ๋งž์•„์š” !!)

๋งํฌ๋ฅผ ์ถ”๊ฐ€ํ•ด์ค€๋‹ค.

 

https://github.com/mac-cain13/R.swift.git

์˜ค์ž‰ ๊ทผ๋ฐ ์•ˆ๋ณด์ธ๋‹ค. ํ ..

๋ฐ”๋กœ ์Šคํ„ฐ๋””์žฅ๋‹˜ํ•œํ…Œ ๋ฌผ์–ด๋ดค๋‹ค.

์ด๋Ÿฐ ์ฃผ์†Œ๊ฐ€ ์ž˜๋ชป ๋œ ๊ฒƒ์ด์—ˆ๋”ฐ..... ์ด๋Ÿฐ ๋ฐ”๋ณด.............

https://github.com/mac-cain13/R.swift.git ๋งํฌ๋ฅผ ์ถ”๊ฐ€ํ•ด์ฃผ์ž !!

 

add packages๋ฅผ ๋ˆŒ๋Ÿฌ ํŒจํ‚ค์ง€๋ฅผ ์ถ”๊ฐ€ํ•ด์ค€๋‹ค.

 

2. ๋‹ค์Œ์œผ๋กœ ํƒ€๊นƒ-> general์„ ์„ ํƒํ•œ ๋’ค, Frameworks, Libraries, and Embeded Content ์„น์…˜์—์„œ + ๋ฒ„ํŠผ์„ ๋ˆŒ๋Ÿฌ RswiftLibrary๋ฅผ ์ถ”๊ฐ€ํ•ด์ฃผ๋ผ๊ณ  ํ•œ๋‹ค.

๊ทผ๋ฐ package๋ฅผ ์ถ”๊ฐ€ํ•˜๋‹ˆ ์ด๋ฏธ ์žˆ์—ˆ๋‹ค !

 

3. ํƒ€๊นƒ์„ ์„ ํƒํ•˜๊ณ , "Build Phases" ํƒญ์—์„œ "Run Build Tool Plug-ins"๋ฅผ ์„ ํƒํ•œ ๋’ค + ๋ฒ„ํŠผ์„ ํด๋ฆญํ•œ๋‹ค.

RswiftGenerateInternalResources ๋ฅผ ์ถ”๊ฐ€ํ•ด์ค€๋‹ค.

 

 

์„ค์น˜ ๋!

์ด์ œ build๋ฅผ ํ•˜๋ฉด, trust ํ•  ๊ฒƒ์ธ์ง€ ์ฐฝ์ด ๋œจ๋Š”๋ฐ, trust ํ•˜๊ฒ ๋‹ค๊ณ  ํ•˜๋ฉด ๋œ๋‹ค !!

import ํ•ด๋ณด๋ฉด ์ž˜ ๋˜๋Š” ๊ฒƒ์„ ํ™•์ธํ•  ์ˆ˜ ์žˆ๋‹ค !

build๋„ ์ž˜ ๋œ๋‹ค ~!!!

 

 

R.swift ์‚ฌ์šฉํ•˜๊ธฐ

์ด๋ ‡๊ฒŒ ํ•˜๋ฉด ํ”„๋กœ์ ํŠธ ๋‚ด์˜ ๋ชจ๋“  Resource๋“ค์€ R.~~~๋กœ ํ˜ธ์ถœํ•ด ์‚ฌ์šฉํ•  ์ˆ˜ ์žˆ๋‹ค.

๊ทธ ์ด์œ ๋Š”, R.generated.swift๊ฐ€ ํ•ด๋‹น ํ”„๋กœ์ ํŠธ์˜ Resources๋ฅผ ์ฝ”๋“œ์ฒ˜๋Ÿผ ์‚ฌ์šฉํ•˜๊ธฐ ๋•Œ๋ฌธ์ด๋‹ค.

 

 

 

๋ฐ˜์‘ํ˜•

 

728x90
๋ฐ˜์‘ํ˜•
728x90
๋ฐ˜์‘ํ˜•
728x90

react๋กœ ๋งŒ๋“  ํ”„๋ก ํŠธ๋ฅผ ๋ฐฐํฌํ•˜๊ธฐ ์œ„ํ•ด netlify๋ฅผ ๊ฐ€์ž…ํ•˜๊ณ , ๊นƒํ—ˆ๋ธŒ๋กœ ํ”„๋กœ์ ํŠธ๋ฅผ ์—ฐ๋™ํ•˜์˜€๋‹ค.

 

ํ•˜์ง€๋งŒ, ์ž๊พธ ์•Œ ์ˆ˜ ์—†๋Š” ์—๋Ÿฌ๋“ค์ด ๋œจ๋Š” ๊ฒƒ์ด์—ˆ๋‹ค.

 

๋‚˜๋Š” react๋ฅผ ์ž˜ ์•Œ์ง€ ๋ชปํ•˜๊ธฐ ๋•Œ๋ฌธ์—, ๋ญ˜ ํ•ด์•ผํ•˜๋Š”์ง€ ์•Œ์ง€ ๋ชปํ–ˆ๋‹ค.

๊ทธ๋ž˜์„œ ๋‚ด๊ฐ€ ๊ฒช์—ˆ๋˜ ์‹œํ–‰์ฐฉ์˜ค๋“ค์„ ์ •๋ฆฌํ•ด๋ณด๋ ค ํ•œ๋‹ค.

 

 

 

๐Ÿป  build ํด๋” ์ƒ์„ฑํ•˜๊ธฐ

npm run build

 

ํ•ด๋‹น ์ฝ”๋“œ๋ฅผ ์‹คํ–‰ํ•˜๋ฉด ์ž๋™์œผ๋กœ build ํŒŒ์ผ์ด ์ƒ์„ฑ๋œ๋‹ค.

 

 

๐Ÿป  Failed during stage "Reading and parsing configuration files": When resolving config: Base directory does not exist: /opt/build/repo/velog_front ์—๋Ÿฌ ํ•ด๊ฒฐํ•˜๊ธฐ

 

ํ•ด๋‹น ์—๋Ÿฌ๋Š” ๋‚˜์˜ ์‹ค์ˆ˜๋กœ ๋ฐœ์ƒํ•œ ์—๋Ÿฌ์˜€๋‹ค.

๊นƒํ—ˆ๋ธŒ ๋ ˆํŒŒ์ง€ํ† ๋ฆฌ๋ฅผ ์—ฐ๋™ํ•ด์„œ ๋ฐฐํฌํ•˜์˜€๋Š”๋ฐ, ๊ทธ๋ ‡๊ฒŒ ํ•˜๋ฉด ๊นƒํ—ˆ๋ธŒ์— ์žˆ๋Š” ํด๋”๋ช…์„ ์ ์–ด์ค˜์•ผ ํ•˜๋Š”๋ฐ, ๋‚˜๋Š” ๋‚ด๊ฐ€ ์›ํ•˜๋Š” ์ด๋ฆ„์„ ์ ๊ณ ์•ผ ๋ง์•˜๋‹ค....

์ด๋ ‡๊ฒŒ ๋‚ด ๋ ˆํŒŒ์ง€ํ† ๋ฆฌ์—๋Š” client์™€ server๊ฐ€ ์žˆ๋Š”๋ฐ, ๋‚˜๋Š” Client๋งŒ ๋ฐฐํฌํ•˜๊ณ  ์‹ถ์œผ๋ฏ€๋กœ ์„ค์ •ํ•  ๋•Œ ํ•ด๋‹น ์ด๋ฆ„์„ ์ ์–ด์ค˜์•ผ ํ•œ๋‹ค.

์ด๋ ‡๊ฒŒ Base directory์— ๊นƒ์— ์žˆ๋Š” ํด๋”๋ช…์„ ์ ์–ด์ค˜์•ผ ํ•œ๋‹ค๋Š” ๊ฒƒ !!

 

 

 

๐Ÿป  Manifest: Line: 1, column: 1, Syntax error. ์—๋Ÿฌ ํ•ด๊ฒฐํ•˜๊ธฐ

netlify๋กœ deploy๋ฅผ ๊ณ„์† ์‹œ๋„ํ–ˆ์œผ๋‚˜, deploy๋Š” ์„ฑ๊ณตํ•ด๋„ ๋นˆ ํ™”๋ฉด์ด ์ž๊พธ ๋–ด๋‹ค.

fn + F12๋ฅผ ๋ˆŒ๋Ÿฌ ๊ฐœ๋ฐœ์ž ๋„๊ตฌ์˜ ์ฝ˜์†”์ฐฝ์„ ํ™•์ธํ•˜๋‹ˆ ๋‹ค์Œ๊ณผ ๊ฐ™์€ ๋‘ ๊ฐœ์˜ ์—๋Ÿฌ๊ฐ€ ๋–ด๋‹ค.

Manifest: Line: 1, column: 1, Syntax error.

 

์ด๋ฅผ ํ•ด๊ฒฐํ•˜๊ธฐ ์œ„ํ•ด์„œ๋Š”, build ํด๋”์˜ index.html ์ฝ”๋“œ๋ฅผ ์ˆ˜์ •ํ•ด์ฃผ๋ฉด ๋œ๋‹ค.

# ๊ธฐ์กด ์ฝ”๋“œ
<link rel="manifest" href="/velog/manifest.json" />

# ์ˆ˜์ • ์ฝ”๋“œ
<link rel="/manifest" href="/velog/manifest.json" /> #manifest ์•ž์— / ๋ถ™์ด๊ธฐ
# ๊ธฐ์กด ์ฝ”๋“œ
<link rel="icon" href="/velog/favicon.ico" />

# ์ˆ˜์ • ์ฝ”๋“œ
<link rel="icon" href="./velog/favicon.ico" /> # ์•ž์— . ๋ถ™์ด๊ธฐ
# ์ˆ˜์ • ์ „
<link href="/velog/static/css/main.cfa5924d.css" rel="stylesheet" />

# ์ˆ˜์ • ํ›„
<link href="./velog/static/css/main.cfa5924d.css" rel="stylesheet" /> # ์•ž์— . ๋ถ™์ด๊ธฐ

 

 

 

 

๐Ÿป  Failed to load resource: net::ERR_HTTP2_PROTOCOL_ERROR ์—๋Ÿฌ ํ•ด๊ฒฐํ•˜๊ธฐ

/%PUBLIC URL%/favicon.ico:1

์ด ์—๋Ÿฌ๋ฅผ ํ•ด๊ฒฐํ•˜๊ธฐ ์œ„ํ•ด์„œ๋Š” app.js์—์„œ router์— basename์„ ์ง€์ •ํ•ด์ฃผ๋ฉด ๋œ๋‹ค.

 

function App() {
  return (
    <ThemeProvider theme={theme}>
      <GlobalStyle />
      <Router basename={process.env.PUBLIC_URL}/> // basename ์ถ”๊ฐ€
    </ThemeProvider>
  );
}

์ด๋ ‡๊ฒŒ basename์„ ์ถ”๊ฐ€ํ•ด์ฃผ๋ฉด ํ•ด๊ฒฐ ๋œ๋‹ค !

 

728x90
๋ฐ˜์‘ํ˜•
728x90
๋ฐ˜์‘ํ˜•
๋ฐ˜์‘ํ˜•

๐Ÿ–ฅ๏ธ  ThemeProvider ?

์ง€์ •๋œ ๋””์ž์ธ ์‹œ์Šคํ…œ์„ ๋ชจ๋“  ์ฝ”๋“œ์—์„œ ์‚ฌ์šฉํ•˜๊ธฐ ์œ„ํ•ด์„œ๋Š” ์–ด๋–ป๊ฒŒ ํ•ด์•ผํ• ๊นŒ !?

๊ทธ๋•Œ ์‚ฌ์šฉํ•˜๋Š” ๊ฒƒ์ด ThemeProvider์ด๋‹ค.

React ์ปดํฌ๋„ŒํŠธ์—์„œ ํ…Œ๋งˆ์— ๋Œ€ํ•œ ์ •๋ณด๋ฅผ ์ œ๊ณตํ•˜๋Š” ์—ญํ• ์ด๋ผ๊ณ  ํ•œ๋‹ค. ์ด๋ฅผ ์‚ฌ์šฉํ•˜๋ฉด ํ•˜์œ„ ์ปดํฌ๋„ŒํŠธ์—์„œ ๊ณตํ†ต theme์„ ์‚ฌ์šฉํ•  ์ˆ˜ ์žˆ๋‹ค.

์ƒ‰์ƒ๊ฐ’์€ props๋ฅผ ํ†ตํ•ด ์ „๋‹ฌํ•œ๋‹ค.

 

 

๐Ÿ–ฅ๏ธ  ์–ด๋–ป๊ฒŒ ์‚ฌ์šฉํ• ๊นŒ?

1. theme ํŒŒ์ผ์„ ๋งŒ๋“ค๊ณ , ํ•ด๋‹น ํŒŒ์ผ์— ์ƒ‰์ƒ์„ ์ง€์ •ํ•œ๋‹ค.

๋‹ค์Œ์€ ๋‚ด๊ฐ€ ์ง€์ •ํ•œ theme ์ƒ‰์ƒ์ด๋‹ค. 

// styles/theme.js

const theme = {
  colors: {
    background: "#121212",
    text: "#ececec",
    primary: "#63e6be",
    primary2: "#62E6BE",
    white1: "#F1F3F5",
    white: "#FFFFFF",
    unSelected: "#ACACAC",
    secondBlack: "#1E1E1E",
    divider: "#2A2A2A"
  },
};

export default theme;

 

 

2. import ํ•˜๊ธฐ

๊ทธ๋ฆฌ๊ณ  ํ•ด๋‹น ํŒŒ์ผ์„ ์‚ฌ์šฉํ•  ์ˆ˜ ์žˆ๋„๋ก ์ƒ๋‹จ์— import ํ•ด์ฃผ๋ฉด ๋œ๋‹ค.

import { ThemeProvider } from "styled-components";
import theme from "../../styles/theme";

 

 

3. App.js์— ์‚ฌ์šฉํ•˜๊ธฐ

import theme from "./styles/theme";
import Router from "./router/Router";

function App() {
  return (
    <ThemeProvider theme={theme}>
      <GlobalStyle />
      <Router />
    </ThemeProvider>
  );
}

export default App;

์ด๋ ‡๊ฒŒ ์ƒ์„ฑํ•œ ๊ฐ์ฒด๋ฅผ ThemeProvider์˜ props๋กœ ๋„ฃ์–ด์ฃผ๋ฉด ๋œ๋‹ค !!

 

 

4. ์‹ค์ œ ์ฝ”๋“œ์—์„œ ์‚ฌ์šฉํ•˜๊ธฐ

background-color: ${theme.colors.background};

 

 

์ด๋ ‡๊ฒŒ ํ•˜๋ฉด, theme ํŒŒ์ผ์— ์žˆ๋Š” ์ƒ‰์ƒ๋“ค์„ ๋‹ค๋ฅธ ํŒŒ์ผ์—์„œ๋„ ์‚ฌ์šฉํ•  ์ˆ˜ ์žˆ๋‹ค !!

 

 

 

 

728x90
๋ฐ˜์‘ํ˜•
728x90
๋ฐ˜์‘ํ˜•
728x90
๋ฐ˜์‘ํ˜•

 

didSet์„ ์–ด์ฉŒ๋‹ค ๋งŒ๋‚˜๊ฒŒ ๋๋ƒ๋ฉด,

๋‚ด๊ฐ€ ์ฐธ์—ฌํ•˜๊ณ  ์žˆ๋Š” iOS ์Šคํ„ฐ๋””์—์„œ ๋งก์€ ํŒŒํŠธ๋ฅผ ๊ตฌํ˜„ํ•˜๋‹ค ๋งŒ๋‚˜๊ฒŒ ๋˜์—ˆ๋‹ค.

๋‚ด๊ฐ€ ๊ฐœ๋ฐœํ•ด์•ผ ํ•˜๋Š” ๋ถ€๋ถ„์€ ๋‹ค์Œ๊ณผ ๊ฐ™๋‹ค.

1. ํ™”์‚ดํ‘œ ๋ฒ„ํŠผ์„ ๋ˆŒ๋Ÿฌ ๋‚ ์งœ๋ฅผ ๋ฐ”๊พผ๋‹ค.
2. ๋‚ ์งœ๊ฐ€ ๋ฐ”๋€” ๋•Œ๋งˆ๋‹ค data filter์˜ ๊ธฐ์ค€ ๋‚ ์งœ๋ฅผ ์„ ํƒ๋œ ๋‚ ์งœ๋กœ ๋ฐ”๊ฟ”์ค€๋‹ค.
3. ๋ฐ”๋€ filter์˜ ๋‚ ์งœ์— ๋”ฐ๋ผ ์ด์— ๋งž๊ฒŒ filtering ๋œ ๋ฐ์ดํ„ฐ๋“ค์„ ๋ณด์—ฌ์ค€๋‹ค.

 

์ด๋•Œ ๋ฐ์ดํ„ฐ๋ฅผ ๋„˜๊ธฐ๊ณ , ํ™”๋ฉด์„ ๋‹ค์‹œ ๊ทธ๋ฆฌ๋Š” ๊ณผ์ •์—์„œ ์ƒ๊ฐ๋‚œ ๊ฒƒ์€ delegate ๋ฐ–์— ์—†์—ˆ๋‹ค.

ํ•˜์ง€๋งŒ ๋ฐ์ดํ„ฐ๋ฅผ ๋„˜๊ฒจ๋„, ํ™”๋ฉด์ด ๋‹ค์‹œ ๊ทธ๋ ค์ง€์ง€๋Š” ์•Š์•˜๋‹ค.

 

๊ทธ๋Ÿฌ๋‹ค ์•Œ๊ฒŒ ๋œ ๊ฒƒ์ด didSet์ด๋‹ค.

 

 

 

 

 

 

didSet์ด๋ž€

๊ฐ„๋‹จํ•˜๊ฒŒ ์ด์•ผ๊ธฐํ•˜๋ฉด, ํ”„๋กœํผํ‹ฐ์˜ ๊ฐ’์ด ์ƒˆ๋กœ ์„ค์ •๋œ ํ›„ ํ˜ธ์ถœ๋˜๋Š” ์ฝ”๋“œ์ด๋‹ค.

 

์ฆ‰, ๊ฐ’์ด ๋ฐ”๋€Œ๊ณ  ์ด์— ๋Œ€ํ•ด ํ™”๋ฉด์„ ๋‹ค์‹œ ๊ทธ๋ ค์ค˜์•ผ ํ•˜๋Š” ๋‚˜์—๊ฒŒ๋Š” ๊ผญ ํ•„์š”ํ•œ ๋ถ€๋ถ„์ด์—ˆ๋‹ค.

didSet์„ ์„ค์ •ํ•˜๋ฉด, ๊ฐ’์ด ๋ฐ”๋€” ๋•Œ๋งˆ๋‹ค ์ž๋™์œผ๋กœ ์ด ๋ถ€๋ถ„์ด ํ˜ธ์ถœ๋œ๋‹ค๊ณ  ํ•œ๋‹ค.

 

 

 

 

 

์–ด๋–ป๊ฒŒ ์‚ฌ์šฉํ•˜๋ƒ๋ฉด

var dateSend: Date = Date() {
    didSet {
        updateUI(for: dateSend)
    }
}

 

์ด๋ ‡๊ฒŒ, ํ”„๋กœํ† ์ฝœ๋กœ ๋ฐ›์€ dateSend์˜ ๊ฐ’์ด ๋ฐ”๋€” ๋•Œ๋งˆ๋‹ค ์‹คํ–‰๋ผ์•ผ ํ•˜๋Š” ํ™”๋ฉด์ด ๋ฐ”๋€Œ๋Š” updateUI ํ•จ์ˆ˜๋ฅผ ํ˜ธ์ถœํ•ด์ค€๋‹ค.

 

์‚ฌ์‹ค ๋‚˜์ค‘์—๋Š” reloadํ•จ์ˆ˜๋ฅผ ์จ์„œ ๊ทธ๋ƒฅ collectionView์˜ cell์„ ์—…๋ฐ์ดํŠธํ•˜๋Š” ๋ฐฉ์‹์„ ํƒํ•˜๊ฒŒ ๋ผ์„œ ์ด didSet์€ ์‚ฌ์šฉํ•˜์ง€ ์•Š์•˜์ง€๋งŒ, ์ด๋Ÿฐ ์นœ๊ตฌ๋„ ์žˆ๊ตฌ๋‚˜ ~~ ํ•˜๋Š” ์ค‘์š”ํ•œ ์‚ฌ์‹ค์„ ๋ฐฐ์šฐ๊ฒŒ ๋˜์—ˆ๋‹ค.

 

 

 

 

 

 

 

 

 

728x90
๋ฐ˜์‘ํ˜•

+ Recent posts