Notice
Recent Posts
Recent Comments
Link
일 | 월 | 화 | 수 | 목 | 금 | 토 |
---|---|---|---|---|---|---|
1 | 2 | |||||
3 | 4 | 5 | 6 | 7 | 8 | 9 |
10 | 11 | 12 | 13 | 14 | 15 | 16 |
17 | 18 | 19 | 20 | 21 | 22 | 23 |
24 | 25 | 26 | 27 | 28 | 29 | 30 |
31 |
Tags
- Animation
- uikit
- 고차함수
- calendar
- Observer
- PushNotification
- protocol
- viewlifecycle
- error
- list
- Refresh
- Switch
- struct
- singleton
- escaping
- IOS
- Git
- ScrollView
- 글또
- http
- segue
- mvvm
- SWIFTUI
- 화면전환
- SWIFT
- NotificationCenter
- class
- self
- array
- apns
Archives
- Today
- Total
seong_hye, the developer
Swift) WidgetKit이란? 본문
📘 Swift) WidgetKit
홈화면이나 잠금화면에서 확인 가능한 위젯을 어떻게 만들 수 있는지
어떤 프레임워크를 사용하는지 알아보자
🔹 WidgetKit이란?
iOS 14 이상에서 도입된 홈 화면/잠금 화면 위젯을 만들 수 있게 해주는 프레임워크SwiftUI 기반으로 앱의 주요 정보를 작고 빠르게 확인할 수 있는 인터페이스를 제공함
🔹 WidgetKit의 기본 개념
구성 요소 | 설명 |
WidgetKit 프레임워크 | 위젯을 만들기 위한 핵심 프레임워크 |
Widget Extension | 앱과는 별개의 실행 단위 (독립적인 타겟) |
Timeline | 위젯이 보여줄 데이터를 시간 기반으로 정의 |
TimelineEntry | 특정 시간에 표시될 데이터 단위 |
TimelineProvider | Timeline을 생성하고 관리하는 객체 |
WidgetConfiguration | 위젯의 종류, 스타일, 설정 방식 정의 |
🔹 Xcode에서 Widget 생성 방법
추가하고자 하는 앱의 File -> New -> Target을 클릭
Widget Extension을 선택한 후 이름과 원하는 내용을 선택하여 생성 가능
🔹 기본 구성 흐름
✅ TimelineEntry
struct SimpletEntry: TimelineEntry {
let data: Date
let configuration: ConfigurationAppIntent
}
TimelineEntry 프로토콜을 채택하고 있기에 Date에 대한 정보는 필수
위젯이 들고 있어야하는 정보들을 선언하고 사용할 수 있게 함
✅ Widget View
struct TestingEntryView : View {
var entry: Provider.Entry
var body: some View {
VStack {
...
}
}
}
위젯에 대한 뷰를 그리는 객체
실제 위젯이 어떻게 그려지느냐를 나타내는 곳
✅ Widget
struct Testing: Widget {
let kind: String = "Testing"
var body: some WidgetConfiguration {
AppIntentConfiguration(kind: kind, intent: ConfigurationAppIntent.self, provider: Provider()) { entry in
TestingEntryView(entry: entry)
.containerBackground(.fill.tertiary, for: .widget)
}
}
}
위젯이 실질적으로 돌아가는 부분
AppIntentConfiguration의 경우 iOS 17+ 부터 나온 기능
- kind: 위젯의 identifier에 해당하는 부분으로 bundleIdentifier처럼 설정할 수 있음
- intent: AppIntent로 앱 기능을 호출 할 수 있도록 해줌
🔍 APPIntent
iOS 16+ (특히 iOS 17+) 부터 도입된 Swift 기반의 선언적 인텐트 시스템
사용자가 앱 외부에서 입의 기능을 실행할 수 있게 만드는 구조
ex) Siri, 위젯, Shortcuts(단축어), Spotlight
🔹 위젯 크기 종류
크기 | 설명 |
.systemSmall | 작은 정사각형 |
.systemMedium | 작은 직사각형 |
.systemLarge | 큰 직사각형 |
.acessoryInline | 잠금화면 글자 스타일 (iOS 16+) |
.accessoryCircular | 원형 잠금화면 위젯 |
.accessoryRectangular | 잠금화면 사각형 위젯 |
🔹 화면에 위젯 띄우는 방법
- 화면을 꾹 눌러 홈 화면 편집 화면에서 위젯 추가를 통해 원하는 위젯을 추가할 수 있음
- 원하는 어플을 꾹 눌러 나오는 화면 중 원하는 위젯을 선택하여 추가할 수 있음
'IOS' 카테고리의 다른 글
Swift) Cocoapods에 대해 알아보자 (0) | 2022.08.02 |
---|---|
Swift) Alamofire에 대해 알아보자 (0) | 2022.08.02 |
Swift) 문법 정리 - COW(Copy-On-Write) (0) | 2022.08.02 |
Swift) 백그라운드 실행(Background Execution) (0) | 2022.08.02 |
Swift) DispatchSourceTimer이란? (0) | 2022.08.02 |
Comments