Open hyun99999 opened 2 years ago
Complications and widgets: Reloaded - WWDC22 - Videos - Apple Developer
๋ณธ ๊ธ์ WWDC ๋ฅผ ๋ณด๊ณ , ๋ฒ์ญ ๋ฐ ์์ฝ ๊ทธ๋ฆฌ๊ณ ์คํํด๋ณด๋ ์คํฐ๋ ํ๋ก์ ํธ์ ์ผํ์ ๋๋ค.
์ปดํ๋ฆฌ์ผ์ด์ ์ watchOS ์ ์ฃผ์ ์์๋ก ์๊ณ ํ์ด์ค์ quick, glaceable information ์ ๋ณด์ฌ์ค๋๋ค. ๋ํ, ์ฆ์ ์ ๊ทผํ ์ ์๋ high-value ์ ์ ๋ณด๋ฅผ ์ ๋ฌํ๊ณ ํญ ํ์ฌ ์ฑ์ ๊ด๋ จ ์์น๋ก ์ด๋์์ผ์ค๋๋ค.
watchOS 2์์๋ ClockKit ๊ฐ ์ปดํ๋ฆฌ์ผ์ด์ ์ ๋ง๋ค ์ ์๋๋ก ํ์๊ณ ๊ทธ๋๋ถํฐ ์์๋์์ต๋๋ค.
ํ๋ถํ ์ปดํ๋ฆฌ์ผ์ด์ ๊ณผ ๊ทธ๋ํฝ ์ปจํ ์ธ ์ ์๋ก์ด families ์ธํธ์ ํจ๊ป watchOS 5 ๊ฐ ์๊ฐ๋์์ต๋๋ค.
SwiftUI ์ปดํ๋ฆฌ์ผ์ด์ ๊ณผ ๋ค์์ ์ปดํ๋ฆฌ์ผ์ด์ ์ watchOS 7์์ ์๊ฐ๋์ด ์ปดํ๋ฆฌ์ผ์ด์ ์ ๋ค์ํ ์ต์ ์ ์ ๊ณตํ๋ฉฐ ๋ฐ์ ์ํฌ ์ ์๊ฒ ํด์ฃผ์์ต๋๋ค.
์ค๋ ์ปดํ๋ฆฌ์ผ์ด์ ์ WidgetKit ๊ณผ ์ฌ์ฐฝ์กฐ๋์ด iOS 16 ๊ณผ watchOS 9 ์ WidgetKit ์ผ๋ก ๋ ํ๋ซํผ์์ ํ๋ฅญํ ์ปดํ๋ฆฌ์ผ์ด์ ๊ณผ ์์ ฏ์ ๊ตฌ์ถํด ์ฝ๋๋ฅผ ํ ๋ฒ ์ฐ๋ฉด ๊ธฐ์กด ํ ํ๋ฉด ์์ ฏ๊ณผ ์ธํ๋ผ๋ฅผ ๊ตฌ์ถํ ์ ์๊ฒ ๋ฉ๋๋ค.
์ด๋ฅผ ์ํด์ ๊ธฐ์กด WidgetFamily ์ ํ์ accessory ๋ผ๋ ์ ๋์ด๋ฅผ ๊ฐ์ง ์์ ์๋ก์ด ์์ ฏ๊ตฐ์ ์ถ๊ฐํ์ต๋๋ค.
์๋ก์ด accessoryRectangular ๋ ๊ธฐ์กด์ ClockKit ์graphicRectangular ์ ์ ์ฌํ๊ฒ ํ ์คํธ์ ์ฌ๋ฌ๋ผ์ธ์ด๋ ์์ ์ฐจํธ๋ฅผ ํํํ๋๋ฐ ์ธ ์ ์์ต๋๋ค.
accessoryCircular ๋ ๊ฐ๋จํ ์ ๋ณด, progress view ์ ์ข์ต๋๋ค. ์ด ๋ํ ClockKit ์ graphicCircular ๋ฅผ ๋์ฒดํฉ๋๋ค.
accessoryInline ๋ ํ ์คํธ๋ง ๋๋ ์ฌ๋กฏ์ด๊ธฐ ๋๋ฌธ์ ๋ง์ ํ์ด์ค์ iOS ์๊ฐ ์์ ๋ณด์ฌ์ง๋๋ค.
์ฌ๋กฏ ์ฌ์ด์ฆ๋ ๋ค์ํ ์ฌ์ด์ฆ๋ก ์กด์ฌํ๋๋ฐ ์ด๋ป๊ฒ ์ต์ ์ผ๋ก ์ด์ฉํ ์ง๋ ๋ค์์ ์์๋ณด๊ฒ ์ต๋๋ค.
watchOS ๋ฅผ ํน์ ์ง๋ ๊ฒ์ ์๋ก์ด accessoryCorner ์ ๋๋ค. ์์ ฏ ์ฝํ ์ธ ์ ์์ ์์ ๊ฒ์ด์ง ๋ฐ ํ ์คํธ์ ์์ต๋๋ค.
์์ผ๋ก์ ์ด์ผ๊ธฐ๋ iOS ์ watchOS ์ฌ์ด์ ๊ณตํต families ์ ์ด์ ์ ๋ง์ถ ๊ฒ์ ๋๋ค.
์ watchOS ์ ์์ธํ ์ฌํญ์ ๋ ์๊ณ ์ถ๋ค๋ฉด ํด๋น ์ธ์ ์ ์์ฒญํ๋ฉด ๋ฉ๋๋ค.
์์๊ณผ ๋ ๋๋ง ๋ชจ๋์ ๋ํด์ ์ด์ผ๊ธฐํด๋ด ์๋ค.
accessory widget ์ด ๋ช ๊ฐ์ง ๋ค์ํ ์ธ๊ด์ ๋ณด์ฌ์ฃผ๋ ๊ฒ์ ๋์น์ฑ์์ง๋ ๋ชจ๋ฆ ๋๋ค.
(์์ iOS16 ์์ ์๋กญ๊ฒ ๋ณด์ฌ์ง๋ ๋ฐํฌ๋ช ์์ ฏ๋ค)
์์คํ ์ accessory family widget ๋ค์ ๋ชจ์ต์ ์ ์ดํ๊ณ ์ฐ๋ฆฌ๋ค์ rendering style ์ ์ ์ํ๋ ๊ฑธ ๋์์ค ๋๊ตฌ๋ฅผ ์ฃผ์์ต๋๋ค.
์ฌ๊ธฐ ์์ ฏ์ด ๋ณด์ฌ์ก์ ๋ ๋ค๋ฅธ ์ธ ๊ฐ์ง rendering mode set ์ด ์์ต๋๋ค. ์ผ์ชฝ์์๋ถํฐ Full color, accented, vibrant ์ ๋๋ค.
WidgetRenderingMode ๋ฅผ ๋์ ํด ์ธ ๊ฐ์ง ๋ค๋ฅธ ํํ์ ํฉ๋๋ค.
์๋์ ์ฌ์ฉ๋ ์์๋ฅผ ๋ณด๊ฒ๋๋ฉด widgetRenderingMode keypath ๋ฅผ ํ์ฉํ์ฌ Environment ์์ ์ด ๊ฐ์ ์ ๊ทผํ ์ ์์ต๋๋ค. ์ดํ ์ฝ๋์์ ์ฝํ ์ธ ๊ฐ ์ ํฉํด ๋ณด์ด๋๋ก switch ๋ฌธ์์ ๋ณ๊ฒฝํ ์ ์์ต๋๋ค.
watchOS ์ full color ๋ชจ๋์์ ์ฝํ ์ธ ๋ ์ฌ๋ฌ๋ถ์ด ์ง์ ํ๋๋ก ๋ณด์ฌ์ง๋๋ค.
๊ธฐ์กด์ ๋ง์ ์ปดํ๋ฆฌ์ผ์ด์ ์ ๋ ์จ ๊ฒ์ด์ง์ ๋ณํ๋ activity ring ์ ์๊น์ฒ๋ผ ๋ค์ฑ๋ก์ด ์์ ๋๋๋ค.
accented ๋ชจ๋์์๋ ๋ ๋ฆฝ๋ ์์ ๋ ๊ทธ๋ฃน์ผ๋ก ๋๋๊ฒ ๋ฉ๋๋ค. ๋ ๊ทธ๋ฃน์ ์ฐจ๋ถํ ์์ผ๋ก ์๋์ ๋ถํฌ๋ช ๋๋ง ๋ณด์กดํฉ๋๋ค.
์ฐ๋ฆฌ๋ ์์คํ ์ด ์ด๋ป๊ฒ .widgetAccentable() view modifier ๋ก view ๋ฅผ ๊ทธ๋ฃน์ง๋์ง ์ ์ ์์์ต๋๋ค. ํน์ ์์ ฏ ๋ ๋๋ง ๋ชจ๋ environment ๊ฐ์ ๊ทผ๊ฑฐํด flattend ๋์์ ๋ ์๋ฒฝํ๊ฒ ๋ณด์ด๋๋ก ์ปจํ ์ธ ๋ฅผ ์ ํํ๋์ง ์ ์ ์์์ต๋๋ค.
(๋งจ ์ข์ธก์ด Accented)
์ผ๋ถ๋ ๊ฒ์ ๋ฐฐ๊ฒฝ์ธ ๋ฐ๋ฉด์ ๋ค๋ฅธ ๊ฑด watchOS 9 ์์ full color ๋ฐฐ๊ฒฝ์ ๋๋ค. ์ด๊ฒ์ด watchOS 9 ์ ์๋ก์ด ์ ์ ๋๋ค.
Vibrant ์ ๋ํ ์ด์ผ๊ธฐ๋ฅผ ์์ํด๋ณด๊ฒ ์ต๋๋ค.
iOS ์ Vibrant ๋ชจ๋์์๋ ์ปจํ ์ธ ๋ ํ๋ฆฟํด์ง ๋ค์ Lock Screen ๋ฐฐ๊ฒฝ์ ๋ง๊ฒ ์ ์ ํ ์์ผ๋ก ๋ฐ๋๋๋ค.
์์คํ ์ greyscale ์ ์ปจํ ์ธ ๋ฅผ ์ฃผ๋ชฉํ ์ ์๋๋ก ๊ทธ๋ ค๋ ๋๋ค. ๊ทธ๋ฆฌ๊ณ ์ด๊ฒ์ ํ๊ฒฝ์ ์ ํฉํ๊ฒ ๋ํ๋ฉ๋๋ค.
์ถ๊ฐ์ ์ผ๋ก Lock Screen ์ vibrant rendering mode ๋ฅผ ์์์ผ๋ก ๋ฌผ๋ค์ด๋๋ก ์ค์ ๋ ์ ์์ต๋๋ค. ๋ฐ์ ์ปฌ๋ฌ๋ ๊ฒฐ๊ตญ ์ฃผ๋ก ๋ถํฌ๋ช ํด์ง๊ณ ๋ ๋ฐ์์ง๋๋ค. ๋ฐ๋ฉด, ์ด๋์ด ์ปฌ๋ฌ๋ ๋ฐฐ๊ฒฝ์์ ์ฝ๊ฐ์ ๊ดํ๋ง์ผ๋ก ํ๋ฆฟํ๊ฒ ๋ํ๋ฉ๋๋ค.
๊ฐ๋ ์ฑ์ ๋ณด์ฅํ๊ธฐ ์ํด์ Vibrant ๋ชจ๋์์ ํฌ๋ช ์ปฌ๋ฌ๋ ์ฌ์ฉ์ ํผํ๊ณ ๋์ ์ด๋์ด์์ด๋ ๊ฒ์ ์ ์ฌ์ฉํ์ฌ ๊ฐ๋ ์ฑ์ ์ ์งํ๋ฉด์ ์ฝํ ์ธ ๋ ๋์ ๋ ๋๊ฒ ํฉ๋๋ค.
์ด๋ฌํ ๋ฏธ๋ฌํ ์ฐจ์ด์ธ ์ผ๊ด๋ ๋ฐฐ๊ฒฝ์ ์์ ฏ์ ์ฃผ๊ธฐ ์ํด์ AccessoryWidgetBackground view ๋ฅผ ๋์ ํ์ต๋๋ค.
background view ๋ ๋ค์ํ ์์ ฏ ๋ ๋๋ง ๋ชจ๋์์ ์ฌ๋ฌ ๋ชจ์ต์ ๊ฐ์ง๋๋ค.
๊ธฐ์กด ์ฑ์ธ Emoji Rangers ์ ์๋ก์ด ์์ ฏ ๊ทธ๋ฃน๊ตฐ์ ์ถ๊ฐํ๋ ค๊ณ ํฉ๋๋ค.
์์ ๊ฐ์ด Widget Extension target ์ ํ๋ก์ ํธ์ ์ถ๊ฐํ์ฌ ์์ํ ์ ์์ต๋๋ค.(Emoji Rangers ๋ ์ด๋ฏธ ์๊ธฐ ๋๋ฌธ์ ์ ์์ ฏ๊ณผ ์ปดํ๋ฆฌ์ผ์ด์ ์ ์ถ๊ฐํ๋ ๊ฒ์ ๋ํด์ ์ด์ผ๊ธฐํ๊ฒ ์ต๋๋ค.)
Emoji Rangers ํ๋ก์ ํธ๋ Emoji Rangers ๋ฅผ ์ถ์ ํ๊ณ , ํ ํ๋ฉด ์์ ฏ ์ฌ์ฉ์ผ๋ก Ranger ์ ๊ฑด๊ฐ๊ณผ ์ฌ์ถฉ์ ์๊ฐ์ ์ต์ ์ ๋ณด๋ฅผ ์๋ ค์ค๋๋ค.
๊ธฐ์กด iOS target(CharacterDetailExtension) ๊ณผ ์ฝ๋๋ฅผ ๊ณต์ ํ๋ ์๋ก์ด watchOS target ์ ์ถ๊ฐํ ๊ฒ์ ๋๋ค.
CharacterDetailExtension ์ธ widget extension target ์ ๋ณต์ฌํ์ฌ ์ด๋ฆ์ ๋ฐ๊พธ์์ต๋๋ค.
Bundle Identifier ๋ฅผ ๋ณ๊ฒฝํ๊ณ Base SDK ๋ ๋ณ๊ฒฝํ์ฌ watch App ์ ์ํ extension ์ผ๋ก ๋ณ๊ฒฝํ๊ฒ ์ต๋๋ค.
WatchApp ์ ์๋ก์ด extension(CharacterDetailExtension watch)์ ์๋ฒ ๋ ํ๊ฒ ์ต๋๋ค.
(์ด ๊ณผ์ ์ ๊ธฐ์กด์ ๋ง๋ iOS target ๊ณผ ์ฝ๋๋ฅผ ๊ณต์ ํ๊ธฐ ์ํจ์ด๋ค.
์, ์ด์ watchOS ๋ฅผ ๊ตฌ์ถํ๋ ์ฝ๋๋ฅผ ์์ฑํด๋ด ์๋ค.
EmojiRangerWidget ์ฝ๋๋ฅผ ์ดํด๋ณด๋ฉด timeline provider ๋ฅผ ๋ณผ ์ ์๋๋ฐ ์์คํ ์ด ์ฝํ ์ธ ๋ฅผ ๋ค์ ๋ก๋ํ ๋ ์ฌ์ฉํ๋ ๊ฒ์ ๋๋ค.
์ด๋ฏธ iOS ํ ํ๋ฉด ์์ ฏ์ ์ง์ํฉ๋๋ค. ์ฐ๋ฆฌ๋ small ๊ณผ medium family ์ ์ ๊ทธ๋ฃน๊ตฐ์ ์ถ๊ฐํ ๊ฒ๋๋ค.
accessory families ๊ฐ ์ถ๊ฐ๋์์ต๋๋ค.
์ถ๊ฐ์ ์ผ๋ก system families ๋ watch ์์๋ ์ฌ์ฉ์ด ๋ถ๊ฐ๋ฅํด์ supprtedFamilies ๋ฅผ ์ง์ ํ๊ธฐ ์ํด ํ๋ซํผ ๋งคํฌ๋ก๋ฅผ ์ฌ์ฉํด์ผํฉ๋๋ค.
preview provider ์ ์ families ๋ฅผ ์ํ preview ๋ฅผ ์ถ๊ฐํด๋ด ์๋ค.(๊ธธ์ด๊ฐ ๊ธธ์ด ์ฝ๋๋ก ๋์ฒดํฉ๋๋ค.)
EmojiRangerWidgetEntryView(entry: SimpleEntry(date: Date(), relevance: nil, character: .spouty))
.previewContext(WidgetPreviewContext(family: .accessoryCircular))
.previewDisplayName("Circular")
EmojiRangerWidgetEntryView(entry: SimpleEntry(date: Date(), relevance: nil, character: .spouty))
.previewContext(WidgetPreviewContext(family: .accessoryRectangular))
.previewDisplayName("Rectangular")
EmojiRangerWidgetEntryView(entry: SimpleEntry(date: Date(), relevance: nil, character: .spouty))
.previewContext(WidgetPreviewContext(family: .accessoryInline))
.previewDisplayName("Inline")
#if os(iOS)
// ...
#endif
๋ค์์ผ๋ก watchOS ๋ฅผ ์ฑ๊ณต์ ์ผ๋ก ๋น๋ํ๊ธฐ ์ ์ ์๋ก์ด intentRecommendation API ๋ฅผ ๊ตฌํํด์ผ ํฉ๋๋ค.
Intent ๊ฐ iOS ์ ์์ ฏ ํธ์ง UI ์์ configurable ํ ๋ watchOS ์์๋ preconfigured list ๋ฅผ ์ ๊ณตํด์ผํฉ๋๋ค. ์ด๋ IntentTimelineProvider ์์ ์๋ก์ด recommendations ๋ฉ์๋๋ฅผ ์ค๋ฒ๋ผ์ด๋ฉํ์ฌ ์ ๊ณตํ ์ ์์ต๋๋ค.
[Apple Developer Documentation - recommendations](https://developer.apple.com/documentation/widgetkit/intenttimelineprovider/recommendations()-5ltr5)
(intent ๋ ์๋์ฒ๋ผ ์์ ฏ์ ๊พน ๋๋ฌ ์์ ฏ ํธ์ง์ ํตํด ์ ๊ณตํ๋ ์ต์ ์ ์๋ฏธํฉ๋๋ค. ์ฆ, configurable widget ์ด๋ผ๋ ์ด์ผ๊ธฐ ์ ๋๋ค. widget ์์๋ configurable ํ๋๋ก intent ๋ฅผ ์ค์ ํ ์ ์์ต๋๋ค.
๋ฐ๋ฉด, watchOS ์์๋ preconfigured list ๋ฅผ ์ ๊ณตํด์ผ ํ๋๋ฐ ์ด๋ IntentTimelineProvider ์ ์๋ก์ด recommendations ๋ฉ์๋๋ฅผ ์ค๋ฒ๋ผ์ด๋ฉํ์ฌ ์ ๊ณตํ ์ ์๋ค๋ ๋ง์ ๋๋ค.
๊ทธ๋ฆฌ๊ณ preconfigured list ๋ ์ปดํ๋ฆฌ์ผ์ด์ ์์ ์ฌ์ฉ์์ ๊ฐ์ฅ ๊ด๋ จ์ฑ์ด ๋์ ๋ฐ์ดํฐ๋ฅผ ํ์ํ๊ธฐ์ํ ๋ชฉ์ ์ด๊ณ ์ฌ์ฉ๊ฐ๋ฅํ ์ปดํ๋ฆฌ์ผ์ด์ ๋ชฉ๋ก์์ ์ฌ์ฉ์์๊ฒ ์ถ์ฒ๋ฉ๋๋ค.
์ฆ, ์ ํ์์น์์ ์ปดํ๋ฆฌ์ผ์ด์ ์ ํธ์งํ ๋ ์ฌ์ฉ์์๊ฒ ์ถ์ฒ๋๋ preconfigured complications ์ ๋ง๋๋ ์ญํ ์ ๋๋ค.)
Apple Developer Documentation - Making a Configurable Widget
์ด ๋ฌธ์์๋ configuable ํ widget ์ ๋ง๋ค ์ ์๊ณ , watch ์ preconfigured ํ ์ปดํ๋ฆฌ์ผ์ด์ ์ ์ ๊ณตํ๋ ๋ฐฉ๋ฒ์ ๋ํด์ ์๊ฐํ๊ณ ์์ต๋๋ค.
๋ค์๊ณผ ๊ฐ์ด ์ค๋ฒ๋ผ์ด๋ฉํด์ฃผ๊ฒ ์ต๋๋ค.
preview ์ widget ์ ํ์ธํด๋ณด๊ฒ ์ต๋๋ค.
small widget ์ ๋ํ ์ปจํ ์ธ ๊ฐ ์ ํผํฉํฐ(accessoryCircular) ์์ ์ ๋ง์ง ์์ต๋๋ค. ์๋ก์ด widget families ๋ iOS widgets ๋ณด๋ค ์๊ธฐ ๋๋ฌธ์ ์ฌ๋ฌ๋ถ์ ์ปดํ๋ฆฌ์ผ์ด์ ์ปจํ ์ธ ๋ฅผ ๊ณ ๋ คํด์ผ ํฉ๋๋ค.
์, ์ด์ ์ปดํ๋ฆฌ์ผ์ด์ ์ ๋์ ๋๊ฒ ํ ์๋ก์ด view ์ ๋ํด์ ์ด์ผ๊ธฐ ํด๋ด ์๋ค.
zaccessoryCircular case ์ ๋ํ ์ฝ๋๋ ์ถ๊ฐํด ๋ด ์๋ค.
์ด progressView ๋ Ranger ๊ฐ ๋ค์ ์ ํฌ ์ค๋น๊ฐ ๋๋์ง ์ฌ์ฉ์์๊ฒ ๋ณด์ฌ์ฃผ๋ ์ญํ ์ ํ ๊ฒ์ ๋๋ค.
๋ฌธ์ ๋ ์ด progress view ๊ฐ ํต์ฉ๋๋๋ก ํ์ฑํํ๊ธฐ ์ํด ์ฐ๋ฌ์ timeline entries ๋ฅผ ๋ง์ด ์๊ตฌํ ๊ฒ์ด๋ผ๋ ์ ์ ๋๋ค.
(widget ์ด ์ธ์ ์คํ๋์ด ์ ๋ณด๋ฅผ ์ต์ ํํ ์ง timeline ์ ์์์ผ ํ๊ธฐ ๋๋ฌธ์ timeline entry ๊ฐ ์กด์ฌํฉ๋๋ค.)
๋์ ! ์ฐ๋ฆฌ๋ SwiftUI ์ ์๋ก์ด ์๋ ์ ๋ฐ์ดํธ ProgressView ๋ฅผ ์ฌ์ฉํ ์ ์์ต๋๋ค. ์ด๋ก์จ Ranger ๊ฐ ์์ ํ ํ๋ณต๋ ๋ ์ง ๊ฐ๊ฒฉ์ ๊ฐ์ง๊ณ , ์ด๊ฒ์ ์์คํ ์ด progress view ์ ์ ๋ฐ์ดํธ ์ ์ง๋ฅผ timeline entry ๋จ ํ๋๋ง ํ์ํ๋ค๋ ์๋ฏธ์ ๋๋ค.
์ด์ Retangluar family ๋ฅผ ์ถ๊ฐํ ํ, Ractangular preview ๋ฅผ ์ ํํด๋ด ์๋ค.
๊ณต๊ฐ์ด ์์ผ๋ ์ปดํ๋ฆฌ์ผ์ด์ ์คํ์ผ์ ์ธ ์ค view ๋ฅผ ๋ง๋ค์ด ๋ด ์๋ค. ์บ๋ฆญํฐ ์ด๋ฆ, ๋ ๋ฒจ, ์์ ํ ์น์ ๋ ๋๊น์ง์ ์๊ฐ์ผ๋ก ๊ตฌ์ฑํ ๊ฒ์ด๊ณ , ์บ๋ฆญํฐ ์ด๋ฆ์ ํค๋๋ผ์ธ ์์ฒด์ ์์์ ์กฐ์ ํ๋ widgetAccentable modifier ๋ฅผ ์ถ๊ฐํ ๊ฒ์ ๋๋ค.
vibrant ์์๋ view ๊ฐ ๊ทผ์ฌํด ๋ณด์ด๋๋ฐ watch ์ ๋ค๋ฅธ ๋ ๋๋ง ๋ชจ๋์์๋ ์ด๋ป๊ฒ ๋ณด์ด๋์ง ์ดํด๋ด ์๋ค.
์บ๋ฆญํฐ ์ด๋ฆ์ด accent color ๋ฅผ ์ด๋ป๊ฒ ๊ฐ์ง๋์ง ๋ณผ ์ ์์ต๋๋ค. widgets ๊ณผ complications ๋ฅผ ํธ์ํ๊ฒ ๋๋ผ๊ฒ ๋ง๋ค๊ณ default font parameter ๋ฅผ ์ฌ์ฉํ๊ณ font styles ๋ฅผ ์ฌ์ฉ๋๋ก ํ๋ ๊ฒ์ด ์ค์ํฉ๋๋ค.
iOS ์ watchOS ๋ ์์ฒด์ ์ฌ์ด์ฆ๊ฐ ๋ค๋ฆ ๋๋ค. iOS ๋ regular ๋์์ธ์ด๊ณ , watchOS ๋ rounded ๋์์ธ์ ๋๋ค. ์์ ฏ๊ณผ ์ปดํ๋ฆฌ์ผ์ด์ ์ ๋ค๋ฅธ ๊ฒ๋ค๊ณผ ๊ฐ๊น์ด ์คํฌ๋ฆฐ์ ์๋ฆฌํ ๊ฒ์ ๋๋ค. ๊ทธ๋์ ์ผ๊ด๋๊ฒ ๋ณด์ด๋ font styles Title, Headline, Body, Caption ์ฌ์ฉํ๊ธฐ๋ฅผ ๊ถ์ฅํฉ๋๋ค.
Avatar ๋ฅผ ๋จ์ ๊ณต๊ฐ์ ์ถ๊ฐํ์์ต๋๋ค. iPhone ์์๋ ์ด๋ป๊ฒ ๋ณด์ด๋์ง ์ดํด๋ด ์๋ค.
์ข์ต๋๋ค! ๋ง์ง๋ง์ผ๋ก ํ ์คํธ ๋ผ์ธ๊ณผ ์ ํ์ ์ผ๋ก ์ด๋ฏธ์ง๋ฅผ ๊ฒ์ํ๋ accessoryInline ์ ์ถ๊ฐํด ๋ด ์๋ค.
system-defined coloring ๊ณผ font ์ ๋ฐ๋ผ ๊ทธ๋ ค์ก๋ค๋ ๊ฒ์ ์ฃผ๋ชฉํด ๋ด ์๋ค.
์์ ์ฝ๋์์ ํ์ด๋ก ์ด๋ฆ๊ณผ ์ฌ์ถฉ์ ์นด์ดํธ๋ค์ด์ ๋ณด์ฌ์ฃผ๊ฒ ์ต๋๋ค.
๊ทธ๋ฐ๋ฐ ์ด ํ ์คํธ๋ watch ์ฌ๋กฏ์์ ๋๋ฌด ๊น๋๋ค. ์ฌ๋ฌ๋ถ๋ค๊ป VeiwThatFits ๋ฅผ ๋ณด์ฌ๋๋ฆด ๋์ ๋๋ค.
๊ธธ์ด๋ฅผ ์ถ์ฝํด์ ์ฌ๋ฌ view ๋ฅผ ์ง์ํ ์ ์๊ณ , ViewThatFits ๋ ๋๊ฑฐ๋ ์๋ผ๋ด๊ธฐ ์์ด ๊ฐ๋ฅํ ๊ณต๊ฐ์ ๋ง์ถฐ์ ์ฒ์ ์ฝํ ์ธ view ๋ฅผ ์ ํํฉ๋๋ค.
๋๋ฌด ๊ธธ์ง๋ ๋ชจ๋ฅด๊ฒ ๋ค์. ์ธ๋ฒ์งธ ๋์์ ์ ์ฉํด๋ณด๊ฒ ์ต๋๋ค.
์ด๋ ๊ฒ ์๋ฐํ์ ์ฌ์ถฉ์ ์นด์ดํธ๋ค์ด์ ํตํด ๋ณด์ฌ์ค ์๋ ์์ต๋๋ค.
(๋ ์๊ณ ์ถ๋ค๋ฉด Compose Custom layouts with SwiftUI ์ธ์ ์ ์ฐธ๊ณ ํด์ฃผ์ธ์.)
์ง๊ธ๊น์ง ์์ ฏ๊ณผ ์ปดํ๋ฆฌ์ผ์ด์ ์ ํ์ฑํ ์ํ๋ฅผ ๋ ผ์ํ์ต๋๋ค. ํ์ง๋ง, ํ๋ซํผ์ ๋์ด์ ์ฝํ ์ธ ๋ฅผ ํธ์ง ์ค์ด๊ฑฐ๋ ๋ฐ๊ธฐ๊ฐ ์ด๋์ด์ง๋ฅผ ๊ณ ๋ คํด์ผ ํฉ๋๋ค.
iOS Lock Screen ์์ ๊ธฐ๋ณธ ํ๋์ ๊ธฐ๊ธฐ๊ฐ ์ ๊ฒจ์๋ ๋์์๋ ์ ์ผ์ชฝ ์๋จ์ ์ฝํ ์ธ (ํ์ด๋ผ์ดํธ๋ ์ )๋ฅผ ๋ณด์ฌ์ฃผ๋ ๊ฒ๋๋ค.
์ด๊ฒ์ Settings ์์ ์ค์ ์ด ๊ฐ๋ฅํ๊ณ ์ฌ์ฉ์๋ค์ ์๋ฆผ์ฒ๋ผ ์ ๊ธด ์ํ์์๋ ๋ฏผ๊ฐํ ๋ด์ฉ์ ์ญ์ ํ ์ ์์ต๋๋ค.
watchOS ์์๋ watch ๋ฅผ ์ฐจ๊ณ ์๋ ํ ๊ธฐ๊ธฐ๊ฐ ์ ๊ธ ํด์ ๋ ์ํ๋ก ์์ต๋๋ค. ๋นํ์ฑํ์ผ ๋ watch ๋ ์ด๋์ด ๋ฐ๊ธฐ ํํ์ ์ฝํ ์ธ ์ ๋ฎ์ ์ ๋ฐ์ดํธ ์ผ์ด๋์ค๋ก always-on ์ผ๋ก ๋ณํฉ๋๋ค.
๊ธฐ๋ณธ์ ์ผ๋ก ์ฝํ ์ธ ๋ ์ ์ผ ํ๋จ ์ผ์ชฝ์ ์ํ๋ก ์ญ์ ์ ๊ฐ์ ์์ ์ด ๋์ง ์์ต๋๋ค.
์ ๊ธ ํ๋ฉด์์์ฒ๋ผ ์ฌ์ฉ์๋ค์ด always-on ์ํ์์ ์ปดํ๋ฆฌ์ผ์ด์ ์ฝํ ์ธ ๊ฐ ์ญ์ ๋๋๋ก ์ค์ ํ ์ ์์ต๋๋ค.
์์ ๋ชจ๋ ์ํ๋ฅผ ๊ณ ๋ คํด ์ฌ๋ฌ๋ถ์ ์ปดํ๋ฆฌ์ผ์ด์ ๊ณผ ์์ ฏ์ด ์ ๋์ํ ์ ์๋๋ก ํด์ผ ํฉ๋๋ค.
watch ์์๋ ์์ ฏ์ always-on ๋์คํ๋ ์ด ๊ฒฝํ์ ์ง์ํด์ผ ํฉ๋๋ค. \.isLuminanceReduced
environment ๊ฐ์ผ๋ก ์ฝํ
์ธ ๋ฅผ ๋ always-on ์ํ์ ๋์ํ ์ ์๋๋ก ํ ์ ์์ต๋๋ค.
ClockKit ์์ ๋ชจ๋ timeline entry ์ always-on ์ฝํ ์ธ ๋ฅผ ์ค๋นํ ์ ์์ต๋๋ค.
always-on ์์ ์๊ฐ ๊ด๋ จ ํ ์คํธ์ progress view ๊ฐ always-on ์ ๋ฎ์ ์ ๋ฐ์ดํธ ์ผ์ด๋์ค๋ฅผ ์ง์ํ๋ ค๊ณ ๊ฐ์ํ fidelity mode(์ ํ๋ ๋ชจ๋)๋ก ๋ฐ๋ ๊ฒ์ ๋๋ค. ์ด ๋ชจ๋๋ฅผ ์ง์ํ๊ธฐ ์ํด environment ๊ฐ์ ์ฌ์ฉํ์ฌ ์๊ฐ์ ๋ฏผ๊ฐํ ์ฝํ ์ธ ๋ฅผ ์ญ์ ํ๊ณ , ์ ๋ฐ์ดํธ ๋น๋๋ฅผ ๋ฎ์ถ๊ธฐ ์ํด ์ฝํ ์ธ ์ต์ ํํ๋๋ก ํด์ผ ํฉ๋๋ค.
redaction(๋ฏผ๊ฐํ ์ฌํญ ํธ์ง)์ ๊ดํ ์ด์ผ๊ธฐ๋ฅผ ํด๋ณผ๊ฒ์. ๊ธฐ๋ณธ์ ์ผ๋ก privacy mode ๋ TimelineProvider ๊ฐ ์์ฑํ๋ placeholde view ์ redaction ๋ฒ์ ์ ๋ณด์ฌ์ค ๊ฒ์ ๋๋ค.
์ผ๋ถ element ๊ฐ ๋ฏผ๊ฐํ๊ณ ๋ค๋ฅธ element ๋ redacted ํ ํ์๊ฐ ์๋ค๋ฉด redacted view ๋ง ํ์ํ๊ธฐ ์ํด .privacySensitive
modifier ๋ฅผ ์ฌ์ฉํ ์ ์์ต๋๋ค.
์ด ์์์์ ์์ ฏ์ heart rate ๋ฅผ redact ํ์ง๋ง ์ด๋ฏธ์ง๋ unredact ๋ ์ฑ๋ก ๋จ์ต๋๋ค.
SwiftUI ์ ์๋ก์ด ๊ธฐ๋ฅ์ ๋ ์๊ณ ์ถ๋ค๋ฉด ์ธ์ ์ ์์ฒญํด์ฃผ์ธ์.