watchOS CLKTimeIntervalGaugeProviderを使ってみる
CLKTimeIntervalGaugeProvider
Documenより(DeepLで翻訳)
時間間隔を追跡するゲージ。
Complication用の部品です。
GaugeProviderを持つComplicationで使用出来ます。
指定した開始時間から終了時間に向かって、現在位置が移動します。
Complicationの更新は不要です。
指定すれば、勝手に動きます。
Example
CLKTimeIntervalGaugeProvider.ringです。
ゲージ内の丸が移動していきます。
ソースコード
現在時刻+15秒後に開始。開始から60秒で終了。
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 | 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更新、アプリから再度時間を指定する必要があります。