728x90
반응형
WidgetKit
WidgetKit에 대해 알아보자
참고 링크
- WidgetKit - Apple Developer
- WWDC - WidgetKit
- Apple Developer Documentation
- Widgets Code-along, part 1: The adventure begins - WWDC 2020 - Videos - Apple Developer
WidgetKit의 구성요소
- Configuration : 위젯 식별하며, 위젯의 Content를 표시하면 SwiftUI View를 정의한다.
- Timeline Provider : 시간이 지남에 따라 위젯 View를 업데이트하는 프로세스를 주도한다.
- SwiftUI View : WidgetKit에서 위젯을 표시하는 데 사용하는 View이다.
TimelineEntry (protocol)
- 위젯이 언제 언제 업데이트할 수 있도록 시간을 담은 배열을 보낸다.
- date property를 필수로 갖는다.
- 이 date는 위젯을 렌더링할 시간이 된다.
TimeProvider (protocol) ← Provider라는 타입이 채택중
- widget의 디스플레이를 업데이트할 시기를 WidgetKit에 알려주는 타입니다.
- WidgetKit은 Provider에게 timeline을 요청하고 provider는 widgetkit에게 Timeline을 전달한다.
Widgetkit이 바라는 것
snapshot : 위젯 추가할 때 보여주는 화면
Timeline : 위젯을 최신 상태로 유지하기 위한 Timeline
- ex) 샘플 프로젝트는 현재 시간 + 1시간 씩 더한 배열을 생성한다.
- 만일 지금이 2시라면 [2시, 3시, 4시, 5시, 6시] 배열이 생성되는 것이다.
TimelineReloadPolicy (struct)
- Timeline 마지막에는 어떤 일이 일어날까? 어떻게 해야 항목들을 더 제공할 수 있을까?
atEnd
- widgetkit은 timeline의 마지막 항목이 표시될 때 업데이트 예약을 시작하도록 알려준다.
- 업데이트가 발생하면 timeline 메서드가 다시 호출되어 항목들을 더 제공한다.
after
- 제공된 날짜에 업데이트 예약을 시작하도록 widgetkit에 지시한다.
- ex) 오후 10시로 지정하면 Timeline에 관계없이 오후 10시에 업데이트를 예약한다.
never
- 시스템이 위젯을 독립적으로 업데이트하지 않는다.
- widgetcenter를 사용하여 widgetkit에 새 타임라인을 요청하도록 지시할 때까지 다른 timeline을 요청하지 않는다.
WidgetKit에서 사용할 수 있는 view
- Widget은 SwiftUI로 만들지만 사용할 수 있는 view가 제한적이다. 공식 문서에서 확인할 수 있다. (https://developer.apple.com/documentation/widgetkit/swiftui-views)
- 사용 못하는 view - List, Button, UIViewRepresentable, NSViewRepresentable 등은 widget에서 사용할 수 없다.
- 위젯 내에서만 상호작용을 하는 것은 불가능한 일이니 참고하자.
반응형
'Programming > iOS' 카테고리의 다른 글
[WidgetKit] 변경가능한 위젯 만들기 (Making a Configurable Widget) (0) | 2021.10.30 |
---|---|
[WidgetKit] Deep linking (LinkAPI, widgetURL modifier) (0) | 2021.10.29 |
[iOS/Swift] 흔들어서 QR체크인 실행하기 파헤쳐보기 (motionShake) (1) | 2021.10.15 |
[iOS] Clean Architecture, 내 생각 (0) | 2021.10.09 |
[iOS] MVVM Pattern (0) | 2021.10.08 |