大阪市中央区 システムソフトウェア開発会社

営業時間:平日09:15〜18:15
MENU

Widget作成メモ(4)ーWidgetSmallビューの編集

著者:川上洋
公開日:2020/11/06
最終更新日:2020/11/06
カテゴリー:技術情報 雑記

こんにちは。川上です。

Wigdet処理の続きです。

先のWigdetに表示メンバを作ってた
・let myDayString : String // “○○/○○(○○)”
に、日付け(曜日)表示I/Fを、先に作った”CFLib_Mgr“なるものを使って表示しました。

ググ先生の
’【iOS14】WidgetKitのテンプレートを読み解く’
を、詳しく教示されていたサイトが、とっても有り難かったです。

で、Wigdetの更新処置のミソは、

 // 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ビューの表示設定をしました。

// 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窓にカレンダーイベントをくっつけて見ようと思います。

ではでは。

    上に戻る