SWIFTUI 4

[Swift] D-Day ์œ„์ ฏ ๋งŒ๋“ค๊ธฐ (2)

์•ฑ์—์„œ ์ž…๋ ฅํ•œ ์„ค์ •๊ฐ’์„ ์œ„์ ฏ์— ๋ฐ˜์˜ํ•˜๊ธฐ ์ง€๋‚œ ๊ธ€์—์„œ๋Š” ๊ธฐ๋ณธ์ ์ธ D-Day ์œ„์ ฏ UI ๊ตฌ์„ฑ๊ณผ SwiftUI ๊ธฐ๋ฐ˜์˜ WidgetKit ๋™์ž‘ ๊ตฌ์กฐ๋ฅผ ์ •๋ฆฌํ•ด๋ดค๋‹ค.์ด๋ฒˆ ๊ธ€์—์„œ๋Š” ๋ฉ”์ธ ์•ฑ์—์„œ ์‚ฌ์šฉ์ž๊ฐ€ ์ž…๋ ฅํ•œ D-Day ์ •๋ณด๋ฅผ ์œ„์ ฏ์— ๋ฐ˜์˜ํ•˜๋Š” ์ „์ฒด ํ๋ฆ„์„ ๊ตฌํ˜„ํ•ด๋ณด๋ ค๊ณ  ํ•œ๋‹ค.ํ•ต์‹ฌ์€ ๋‹ค์Œ ์„ธ ๊ฐ€์ง€๋‹ค.โ‘  App Group์„ ์ด์šฉํ•œ ๋ฐ์ดํ„ฐ ๊ณต์œ  (์ง€๋‚œ ๋ธ”๋กœ๊ทธ ๊ธ€์— ์žˆ์Œ)- App Group ๊ธฐ๋ฐ˜์˜ SharedStore ์„ค๊ณ„- D-Day ์„ค์ •๊ฐ’ ๋ชจ๋ธ ์ •์˜โ‘ก ๋ฉ”์ธ ์•ฑ ViewController์—์„œ ์„ค์ •๊ฐ’ ์ €์žฅโ‘ข Widget TimelineProvider์—์„œ ํ•ด๋‹น ๊ฐ’์„ ๋ถˆ๋Ÿฌ์™€ ํ‘œ์‹œ App Group ๊ธฐ๋ฐ˜์˜ SharedStore ์„ค๊ณ„์œ„์ ฏ๊ณผ ๋ฉ”์ธ ์•ฑ์€ ๊ธฐ๋ณธ์ ์œผ๋กœ ์„œ๋กœ ๋…๋ฆฝ๋œ ํ”„๋กœ์„ธ์Šค์—์„œ ๋™์ž‘ํ•œ๋‹ค.๋”ฐ๋ผ์„œ ๋™์ผํ•œ ๋ฐ์ดํ„ฐ๋ฅผ ๊ณต์œ ํ•˜๊ธฐ ..

๐ŸŒ™ 2025.12.01

[Swift] D-Day ์œ„์ ฏ ๋งŒ๋“ค๊ธฐ (1)

iOS์—์„œ '์œ„์ ฏ'์ด๋ผ๋Š” ๊ฐœ๋…์€ ์ƒ๊ฐ๋ณด๋‹ค ์˜ค๋ž˜๋๋‹ค.๋‹ค๋งŒ ์‚ฌ์šฉ์ž์—๊ฒŒ ๋…ธ์ถœ๋˜๋Š” ๋ชจ์Šต๊ณผ ๊ฐœ๋ฐœ์ž๊ฐ€ ๋‹ค๋ฃจ๋Š” ๊ธฐ์ˆ  ์Šคํƒ์€ ํฌ๊ฒŒ ๋‘ ๋ฒˆ ๋ฐ”๋€Œ์—ˆ๋‹ค.์ด๋ฒˆ ๊ธ€์—์„œ๋Š” ์œ„์ ฏ์˜ ํ๋ฆ„์„ ๊ฐ„๋‹จํžˆ ์งš๊ณ , ์™œ ์ง€๊ธˆ์€ SwiftUI ๊ธฐ๋ฐ˜์˜ WidgetKit์œผ๋กœ ๊ฐœ๋ฐœํ•ด์•ผ ํ•˜๋Š”์ง€๋ฅผ ์ •๋ฆฌํ•œ ๋’ค,์˜ˆ์ œ๋กœ D-Day ์œ„์ ฏ์„ ๊ตฌํ˜„ํ•˜๋Š” ์ˆœ์„œ๋ฅผ ๋‹จ๊ณ„๋ณ„๋กœ ์‚ดํŽด๋ณด๋ ค๊ณ  ํ•œ๋‹ค. iOS ์œ„์ ฏ์˜ ๋ณ€ํ™”์™€ WidgetKit์˜ ๋“ฑ์žฅ1. Today Extension ์‹œ์ ˆ(iOS 8 ~ iOS 13)์ดˆ๊ธฐ ์œ„์ ฏ์€ Notification Center์˜ Today View์— ์กด์žฌํ–ˆ๋‹ค.์ด ๋•Œ์˜ ์œ„์ ฏ์€- Today Extension ์ด๋ผ๋Š” ๋ณ„๋„์˜ ํƒ€๊นƒ์œผ๋กœ ๊ตฌํ˜„- UIKit + AutoLayout + Storyboard ๊ธฐ๋ฐ˜- ์•ฑ๊ณผ์˜ ์—ฐ๋™๋„ ์ง€๊ธˆ๋ณด๋‹ค ์ œ์•ฝ์ด ๋งŽ๊ณ , UI ์ž์œ ๋„๋Š”..

๐ŸŒ™ 2025.11.28

[Swift] Privacy Masking(Privacy Screen) ๊ตฌํ˜„ํ•˜๊ธฐ

iOS์—์„œ๋Š” ์‚ฌ์šฉ์ž๊ฐ€ ์•„๋ž˜์—์„œ ์œ„๋กœ ์Šค์™€์ดํ”„๋ž˜ ์•ฑ ์ „ํ™˜๊ธฐ(App Switcher)๋ฅผ ์—ด๋ฉด,์‹œ์Šคํ…œ์ด ํ˜„์žฌ ์•ฑ์˜ ํ™”๋ฉด ์Šค๋ƒ…์ƒท์„ ์ž๋™์œผ๋กœ ์ฐ์–ด ๋ฏธ๋ฆฌ๋ณด๊ธฐ ํ˜•ํƒœ๋กœ ๋ณด์—ฌ์ค€๋‹ค.๋ฌธ์ œ๋Š” ์ด๋•Œ ๋ฏผ๊ฐ ์ •๋ณด๊ฐ€ ๊ทธ๋Œ€๋กœ ๋…ธ์ถœ๋  ์ˆ˜ ์žˆ๋‹ค๋Š” ์ ์ด๋‹ค.์˜ˆ๋ฅผ ๋“ค์–ด ํ—ฌ์Šค ๋ฐ์ดํ„ฐ, ์‚ฌ์šฉ์ž ํ”„๋กœํ•„, ๋ฉ”์‹œ์ง€ ๋“ฑ์€ ๋ณด์•ˆ์ƒ ๊ทธ๋Œ€๋กœ ๋…ธ์ถœ๋˜๋ฉด ๊ณค๋ž€ํ•˜๋‹ค.์ด๋ฒˆ ๊ธ€์—์„œ๋Š”,์ „ํ™˜๊ธฐ๋กœ ์ด๋™ํ•  ๋•Œ ์•ฑ ํ™”๋ฉด ๋Œ€์‹  ๋””ํดํŠธ ๋กœ๊ณ  ํ˜น์€ ์›ํ•˜๋Š” UI๋ฅผ ๊ตฌ์„ฑํ•˜์—ฌ ํ•ด๋‹น ๋ทฐ๊ฐ€ ๋ณด์ด๋„๋ก ๊ฐ€๋ฆฌ๋Š” ๋ฐฉ๋ฒ•์„ UIKit ๊ธฐ๋ฐ˜์œผ๋กœ ๊ตฌํ˜„ํ•ด๋ณด๋ ค๊ณ  ํ•œ๋‹ค. (๋งˆ์ง€๋ง‰์— ๊ฐ„๋žตํ•˜๊ฒŒ SwiftUI๋„ ์žˆ์Œ) ๋™์ž‘ ์›๋ฆฌ์•ฑ์ด active → inactive ๋˜๋Š” background ์ƒํƒœ๋กœ ์ „ํ™˜๋˜๋ฉด,iOS๋Š” ํ˜„์žฌ ์œˆ๋„์šฐ๋ฅผ ๋ Œ๋”๋งํ•œ ๊ฒฐ๊ณผ๋ฅผ ์ž๋™์œผ๋กœ ์บก์ณํ•œ๋‹ค.์ด ์Šค๋ƒ…์ƒท์€ ๊ฐœ๋ฐœ์ž๊ฐ€ ์ง์ ‘ ๊ต์ฒดํ•˜๊ฑฐ๋‚˜ ์‚ญ์ œํ•  ์ˆ˜ ์—†๊ณ ,"..

๐ŸŒ™ 2025.10.19

[SwiftUI] EnvironmentObject

๊ณต์‹๋ฌธ์„œEnvironmentObjectA Property wrapper type of an observable object that a parent or ancestor view supplies.→ ๋ถ€๋ชจ ํ˜น์€ ์กฐ์ƒ ๋ทฐ๊ฐ€ ์ œ๊ณตํ•˜๋Š” observable object์˜ propery wrapper ํƒ€์ž…OverViewAn environment object invalidates the current view whenever the observable object that conforms to Observable Object changes.→ environment object๋Š” observable object์˜ ๋ณ€ํ™”๋ฅผ ๊ฐ์ง€ํ•˜์—ฌ ํ˜„์žฌ ๋ทฐ๋ฅผ ๋ฌดํšจํ™”ํ•ฉ๋‹ˆ๋‹ค. (์ด ๋ง์€ ํ˜„์žฌ ๋ทฐ์— ๋ณ€ํ™”๋ฅผ ์—…๋ฐ์ดํŠธํ•ด์ค€๋‹ค๋Š” ์˜๋ฏธ ๊ฐ™์•„์š”.)If ..

Swift/SwiftUI 2024.10.02