마지막 위젯을 그리는 뷰에 대해 설명하겠습니다. struct widgetWidgetEntryView : View { var entry: Provider.Entry var body: some View { Text(entry.date, style: .time) } } 일반적인 SwiftUI 에서 보여지는 뷰 입니다. @Environment(\.widgetFamily) private var family 를 선언하고 바디에서 switch famliy 를 이용하면 case 에 따른 뷰를 그릴수있습니다. struct OrdersWidgetView: View { var entry: OrdersWidget.Entry @Environment(\.widgetFamily) private var family var body:..
위젯의 핵심인 TimelineProvider에 대해 알아보겠습니다. 처음 설치했을때 샘플로 되어있는 코드입니다. struct Provider: TimelineProvider { func placeholder(in context: Context) -> SimpleEntry { SimpleEntry(date: Date()) } func getSnapshot(in context: Context, completion: @escaping (SimpleEntry) -> ()) { let entry = SimpleEntry(date: Date()) completion(entry) } func getTimeline(in context: Context, completion: @escaping (Timeline) -> (..

위젯 생성되는 파일중에 Widget에 들어가면 struct widgetWidget: Widget { let kind: String = "widgetWidget" var body: some WidgetConfiguration { StaticConfiguration(kind: kind, provider: Provider()) { entry in widgetWidgetEntryView(entry: entry) } .configurationDisplayName("My Widget") .description("This is an example widget.") .supportedFamilies([.systemSmall,.systemMedium,.systemLarge,.accessoryCircular,.access..

번들 밑에 있는 파일에 들어가보겠습니다. import WidgetKit import SwiftUI struct Provider: TimelineProvider { func placeholder(in context: Context) -> SimpleEntry { SimpleEntry(date: Date()) } func getSnapshot(in context: Context, completion: @escaping (SimpleEntry) -> ()) { let entry = SimpleEntry(date: Date()) completion(entry) } func getTimeline(in context: Context, completion: @escaping (Timeline) -> ()) { var..

위젯을 target을 추가하면 자신이 추가한 확장자명으로 된 폴더가 하나 만들어지게 됩니다. 먼저 bundle로 가보겠습니다. import WidgetKit import SwiftUI @main struct widgetWidgetBundle: WidgetBundle { var body: some Widget { widgetWidget() } } 와 같은 형식으로 되어있고 번들에는 앞으로 만들 위젯에 대한 구조체를 선언해서 놓으면 됩니다. 애플에서 제공하는 FoodTruck 샘플을 보면 아래와 같이 사용하고 있습니다. import WidgetKit import SwiftUI @main struct Widgets: WidgetBundle { var body: some Widget { // MARK: - Li..