본문 바로가기

iOS/학습정리

SwiftUI) Widget - (1) Meet Widget

이번 글은 iOS 14부터 추가된 Widget과 관련된 시리즈 글 중 첫 번째 글입니다. 제목에서도 알 수 있듯이 WWDC 2020 - Meet WidgetKit을 바탕으로 작성하였습니다. 글에 오류가 있거나 궁금한 점이 있으시면 언제든 댓글 남겨주세요. 감사합니다:)

WidgetKit

Show relevant, glanceable content from your app on the iOS Home screen or macOS Notification Center. Apple Developer - WidgetKit

home screen with widgets

iOS 14 부터 새롭게 나온 위젯은 더 dynamic하고 personalized합니다. 또한 bold하고 glanceable하게 디자인 됩니다.

이전에는 위젯이 화면의 가장 왼쪽에 위치한 Today View에만 존재했는데 iOS 14부터 Home Screen에도 둘 수 있게 되었습니다. 이는 iOS 14 버전 이상의 아이폰 뿐만 아니라 아이패드 및 mac OS Big Sur에서도 사용 가능합니다.

What Makes a Great Widget?

Glanceable, Relevant, Personalized

위젯에는 세 가지 목표가 있습니다.

Glanceable

짧은 순간에 정보 전달이 가능해야 한다.

Glanceable의 사전적 의미는 '한 번 보고 파악하기 쉬운' 입니다. 사람들은 홈 스크린에 아주 잠시동안만 머물기 때문에, 위젯은 슬쩍 보고 판단하게 됩니다. 따라서 예시로 나온 가장 작은 사이즈(systemSmall)의 위젯을 보면 버튼이나 복잡한 UI가 없습니다.

"Widgets are not mini-apps"

Relevant

모바일 플랫폼에서 공간은 프리이엄 입니다. 즉, 공간은 비싼 자원이고 중요한 역할을 한다고 볼 수 있습니다. 사용자가 필요할 때 필요한 위젯이 화면에 보여지는 것이 중요합니다. 이로 인해 스마트 스택이라는 개념이 나왔습니다.

smartStack

스마트 스택은 그 순간에 맞는 위젯을 보여주기 위해 자동으로 전환되는 위젯 모음입니다.
물론 직접 스와이프해서 전환할 수도 있습니다.

스마트 스택이라 불리는 이유는 애플의 AI 기술인 온 디바이스 인텔리젼스(On-Device Intelligence)를 이용하여 사용자에게 필요한 위젯을 스스로 판단하여 스택의 가장 위에 보이도록 하기 때문입니다. 시스템은 어떤 위젯이 관련성이 높은지 사용자가 제공한 정보와 위젯을 개발할 때 제공하는 정보를 토대로 판단하며, 관련 WidgetKit API가 있습니다.

관련된 내용은 Add Configuration and Intelligence to Your Widgets을 통해 더 자세히 알 수 있습니다.

Personalization

좋은 위젯은 personalization할 수 있어야 합니다.

날씨 위젯의 예시를 보면, 세 가지 다른 크기로 구성되어 있습니다. 반드시 모든 크기를 지원해야하는 것은 아니지만, 가능한 많은 크기를 지원하는 것이 좋습니다.

configurationU

위젯은 크기 말고도 더 커스터마이징 할 수 있습니다. 편집 모드에서 위젯을 탭하면 빠른 설정(configuration)을 위한 창으로 뒤집어집니다.

모든 설정 옵션은 Intents를 사용하여 내장되어 있습니다. 여기서 중요한 것은 WidgetKit을 통해 Intent 부터 Configuration UI를 자동으로 생성할 수 있다는 것입니다. WidgetKit은 개발자가 configuration을 위한 동작들을 간편하게 구현할 수 있도록 합니다.

참고

'iOS > 학습정리' 카테고리의 다른 글

iOS) Intents  (0) 2021.02.28
SwiftUI) Widget - (2) How Widget Works  (2) 2021.02.28
iOS) UIResponder와 Responder Chain  (0) 2021.02.10
iOS) Core Data  (2) 2021.02.02
iOS) Dispatch (GCD)  (0) 2021.02.01