watchOS CLKTimeIntervalGaugeProviderを使ってみる

CLKTimeIntervalGaugeProvider

Document

Documenより(DeepLで翻訳)

時間間隔を追跡するゲージ。

Complication用の部品です。
GaugeProviderを持つComplicationで使用出来ます。

指定した開始時間から終了時間に向かって、現在位置が移動します。
Complicationの更新は不要です。
指定すれば、勝手に動きます。

Example

CLKTimeIntervalGaugeProvider.ringです。
ゲージ内の丸が移動していきます。

開始直後

途中

終了間際

ソースコード

現在時刻+15秒後に開始。開始から60秒で終了。

func getCurrentTimelineEntry(for complication: CLKComplication, withHandler handler: @escaping (CLKComplicationTimelineEntry?) -> Void) {
    switch complication.family {
    case .graphicCorner:
        let lowTempText = CLKSimpleTextProvider(text: "S")
        lowTempText.tintColor = UIColor.cyan
        let highTempText = CLKSimpleTextProvider(text: "E")
        highTempText.tintColor = UIColor.red
        let currentTempText = CLKSimpleTextProvider(text: "-")

        let timeColors = [UIColor.cyan, UIColor.yellow, UIColor.red]
        let timeColorLocations = [0.0, 0.6, 1.0]
        let timeGasugeProvider = CLKTimeIntervalGaugeProvider(style: .ring,
                                                                gaugeColors: timeColors,
                                                                gaugeColorLocations: timeColorLocations as [NSNumber],
                                                                start: Date() + 15,
                                                                end: Date() + 75)

        let cornerTemplate = CLKComplicationTemplateGraphicCornerGaugeText()
        cornerTemplate.gaugeProvider = timeGasugeProvider
        cornerTemplate.leadingTextProvider = lowTempText
        cornerTemplate.trailingTextProvider = highTempText
        cornerTemplate.outerTextProvider = currentTempText
        
        let entry = CLKComplicationTimelineEntry(date: Date(), complicationTemplate: cornerTemplate)

        handler(entry)
    default:
        handler(nil)
    }
}

memo

継続して使用するには、Complication更新、アプリから再度時間を指定する必要があります。

Swift

Posted by shi-n