Widget作成メモ(4)ーWidgetSmallビューの編集
こんにちは。川上です。
Wigdet処理の続きです。
先のWigdetに表示メンバを作ってた、
・let myDayString : String // “○○/○○(○○)”
に、日付け(曜日)表示I/Fを、先に作った”CFLib_Mgr“なるものを使って表示しました。
ググ先生の
’【iOS14】WidgetKitのテンプレートを読み解く’
を、詳しく教示されていたサイトが、とっても有り難かったです。
で、Wigdetの更新処置のミソは、
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 | // MARK: ⚡️ == タイムラインを定義 func getTimeline(for configuration: ConfigurationIntent, in context: Context, completion: @escaping (Timeline<Entry>) -> ()) { var entries: [SimpleEntry] = [] // 現在の時間から開始して、1時間おきに切り替わる5つのEntryで構成されるタイムラインを生成 let currentDate = Date() for hourOffset in 0 ..< 5 { let entryDate = Calendar.current.date(byAdding: .hour, value: hourOffset, to: currentDate)! let entry = SimpleEntry(date: entryDate, configuration: configuration ,myDayString: CFLib_Mgr.getTodayString()) // ← "○○/○○(○○)" entries.append(entry) } let timeline = Timeline(entries: entries, policy: .atEnd) completion(timeline) } |
でした。
また、同様に、プレビュー処理の
・struct MinyCLock_Widget_Previews: PreviewProvider
に、追加しました。
で、WidgetSmallビューの表示設定をしました。
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 | // MARK: ⚡️ == widgetのView、SwiftUIで実装する struct MinyCLock_WidgetEntryView : View { var entry: Provider.Entry var body: some View { ZStack { Color.black.edgesIgnoringSafeArea(.all) Image(uiImage:UIImage(named: "miny_small_1.png")!) Text(entry.myDayString) .offset( y: 65) .font(.largeTitle) .foregroundColor(.white) } } } |
ここまでが、多分は基本的なWigdet処理だと思います。
WigdetのsystemSmall窓での表示空間は狭いので、ちょっとした表示Infoができるのは、systemMediumが便利ですwね。
ので、次には、systemMedium窓にカレンダーイベントをくっつけて見ようと思います。
ではでは。