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 | 
													Tags
													
											
												
												- Refresh
- viewlifecycle
- IOS
- Animation
- SWIFT
- self
- calendar
- error
- Switch
- singleton
- mvvm
- class
- http
- struct
- array
- Observer
- apns
- 화면전환
- 고차함수
- NotificationCenter
- list
- SWIFTUI
- PushNotification
- uikit
- escaping
- segue
- ScrollView
- 글또
- CoreImage
- Git
													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
			
		
	
               
           
					
					
					
					
					
					
				 
								