Komplikace watchOS v Xamarinu
WatchOS umožňuje vývojářům psát vlastní komplikace pro ciferníky
Tato stránka vysvětluje různé typy dostupných komplikací a jak přidat komplikaci aplikace watchOS 3.
Všimněte si, že každá aplikace watchOS může mít pouze jednu komplikaci.
Začněte tím, že si přečtete dokumentaci společnosti Apple a zjistíte, jestli je vaše aplikace vhodná pro komplikaci. Můžete si vybrat z 5 CLKComplicationFamily
typů zobrazení:
Aplikace můžou v závislosti na zobrazených datech implementovat jenom jeden styl nebo všech pět. Můžete také podporovat funkci Time Travel, která poskytuje hodnoty pro minulé a/nebo budoucí časy, když uživatel změní digitální korunu.
Přidání komplikace
Konfigurace
Během vytváření můžete do aplikace kukátku přidat komplikace nebo je do existujícího řešení přidat ručně.
Přidat nový projekt...
Průvodce Přidat nový projekt... obsahuje zaškrtávací políčko, které automaticky vytvoří třídu kontroleru komplikací a nakonfiguruje soubor Info.plist :
Existující projekty
Přidání komplikací do existujícího projektu:
- Vytvořte nový soubor třídy ComplicationController.cs a implementujte
CLKComplicationDataSource
. - Nakonfigurujte soubor Info.plist aplikace tak, aby zpřístupnil komplikaci a identitu, kterou podporují rodiny komplikací.
Tyto kroky jsou podrobněji popsány níže.
CLKComplicationDataSource – třída
Následující šablona jazyka C# obsahuje minimální požadované metody implementace CLKComplicationDataSource
.
[Register ("ComplicationController")]
public class ComplicationController : CLKComplicationDataSource
{
public ComplicationController ()
{
}
public override void GetPlaceholderTemplate (CLKComplication complication, Action<CLKComplicationTemplate> handler)
{
}
public override void GetCurrentTimelineEntry (CLKComplication complication, Action<CLKComplicationTimelineEntry> handler)
{
}
public override void GetSupportedTimeTravelDirections (CLKComplication complication, Action<CLKComplicationTimeTravelDirections> handler)
{
}
}
Postupujte podle pokynů pro komplikaci pro přidání kódu do této třídy.
Info.plist
Soubor Info.plist rozšíření kukátek by měl obsahovat název CLKComplicationDataSource
a které komplikace rodin, které chcete podporovat:
Seznam položek třídy zdroje dat zobrazí názvy tříd, které podtřídy CLKComplicationDataSource
, které zahrnují vaši logiku komplikací.
CLKComplicationDataSource
Všechny funkce komplikací se implementují v jedné třídě, přepisují metody z CLKComplicationDataSource
abstraktní třídy (která implementuje ICLKComplicationDataSource
rozhraní).
Požadované metody
Aby se komplikace spustila, musíte implementovat následující metody:
GetPlaceholderTemplate
– Vrátí statický displej použitý během konfigurace nebo když aplikace nemůže zadat hodnotu.GetCurrentTimelineEntry
- Výpočet správného zobrazení, když je komplikace spuštěna.GetSupportedTimeTravelDirections
- Vrátí možnosti,CLKComplicationTimeTravelDirections
napříkladNone
,Forward
,Backward
neboForward | Backward
.
Ochrana osobních údajů
Komplikace, které zobrazují osobní údaje
GetPrivacyBehavior
-CLKComplicationPrivacyBehavior.ShowOnLockScreen
neboHideOnLockScreen
Pokud tato metoda vrátí HideOnLockScreen
, komplikace zobrazí buď ikonu, nebo název aplikace (a ne žádná data) při uzamčení kukátku.
Aktualizace
GetNextRequestedUpdateDate
– Vrátí čas, kdy by operační systém měl příště dotazovat aplikaci na aktualizovaná data zobrazení komplikací.
Aktualizaci můžete také vynutit z aplikace pro iOS.
Podpora časového cestování
Podpora časového cestování je volitelná a řízená metodou GetSupportedTimeTravelDirections
. Pokud vrátí Forward
, Backward
nebo Forward | Backward
pak musíte implementovat následující metody
GetTimelineStartDate
GetTimelineEndDate
GetTimelineEntriesBeforeDate
GetTimelineEntriesAfterDate
Psaní komplikací
Komplikace se liší od jednoduchého zobrazení dat až po složité vykreslování obrázků a dat pomocí podpory Time Travel. Následující kód ukazuje, jak vytvořit jednoduchou komplikaci s jednou šablonou.
Ukázka kódu
Tento příklad podporuje UtilitarianLarge
pouze šablonu, takže je možné vybrat pouze u konkrétních ciferníků, které podporují tento typ komplikací. Při výběru komplikací na hodinkách se zobrazí MOJE KOMPLIKACE a při spuštění se zobrazí text MINUTA (s částí času).
[Register ("ComplicationController")]
public class ComplicationController : CLKComplicationDataSource
{
public ComplicationController ()
{
}
public ComplicationController (IntPtr p) : base (p)
{
}
public override void GetCurrentTimelineEntry (CLKComplication complication, Action<CLKComplicationTimelineEntry> handler)
{
CLKComplicationTimelineEntry entry = null;
var complicationDisplay = "MINUTE " + DateTime.Now.Minute.ToString(); // text to display on watch face
if (complication.Family == CLKComplicationFamily.UtilitarianLarge)
{
var textTemplate = new CLKComplicationTemplateUtilitarianLargeFlat();
textTemplate.TextProvider = CLKSimpleTextProvider.FromText(complicationDisplay); // dynamic display
entry = CLKComplicationTimelineEntry.Create(NSDate.Now, textTemplate);
} else {
Console.WriteLine("Complication family timeline not supported (" + complication.Family + ")");
}
handler (entry);
}
public override void GetPlaceholderTemplate (CLKComplication complication, Action<CLKComplicationTemplate> handler)
{
CLKComplicationTemplate template = null;
if (complication.Family == CLKComplicationFamily.UtilitarianLarge) {
var textTemplate = new CLKComplicationTemplateUtilitarianLargeFlat ();
textTemplate.TextProvider = CLKSimpleTextProvider.FromText ("MY COMPLICATION"); // static display
template = textTemplate;
} else {
Console.WriteLine ("Complication family placeholder not not supported (" + complication.Family + ")");
}
handler (template);
}
public override void GetSupportedTimeTravelDirections (CLKComplication complication, Action<CLKComplicationTimeTravelDirections> handler)
{
handler (CLKComplicationTimeTravelDirections.None);
}
}
Šablony komplikací
Pro každý styl komplikací je k dispozici celá řada různých šablon. Šablony okruhů umožňují zobrazit kruh ve stylu průběhu kolem komplikace, která se dá použít k zobrazení průběhu nebo jiné hodnoty graficky.
Dokumentace k CLKComplicationTemplate společnosti Apple
Kruhový malý
Všechny tyto názvy tříd šablony mají předponu CLKComplicationTemplateCircularSmall
:
- RingImage – zobrazí jeden obrázek s kruhem průběhu kolem něj.
- RingText – zobrazí jeden řádek textu s kruhem průběhu kolem něj.
- SimpleImage – Stačí zobrazit malý jeden obrázek.
- SimpleText – Stačí zobrazit malý fragment textu.
- StackImage – zobrazení obrázku a řádku textu, jednoho nad druhým
- StackText – zobrazí dva řádky textu.
Modulární malý
Všechny tyto názvy tříd šablony mají předponu CLKComplicationTemplateModularSmall
:
- ColumnsText – zobrazí malou mřížku textových hodnot (2 řádky a 2 sloupce).
- RingImage – zobrazí jeden obrázek s kruhem průběhu kolem něj.
- RingText – zobrazí jeden řádek textu s kruhem průběhu kolem něj.
- SimpleImage – Stačí zobrazit malý jeden obrázek.
- SimpleText – Stačí zobrazit malý fragment textu.
- StackImage – zobrazení obrázku a řádku textu, jednoho nad druhým
- StackText – zobrazí dva řádky textu.
Modulární velký
Všechny tyto názvy tříd šablony mají předponu CLKComplicationTemplateModularLarge
:
- Sloupce – zobrazí mřížku 3 řádků se 2 sloupci, volitelně včetně obrázku vlevo od každého řádku.
- StandardBody – zobrazí tučný řetězec záhlaví se dvěma řádky prostého textu. Záhlaví může volitelně zobrazit obrázek vlevo.
- Tabulka – Zobrazí tučný řetězec záhlaví s mřížkou textu o velikosti 2x2 pod ní. Záhlaví může volitelně zobrazit obrázek vlevo.
- TallBody – Zobrazí tučný řetězec záhlaví s větším písmem, pod kterým je jeden řádek textu.
Utilitarian Small
Všechny tyto názvy tříd šablony mají předponu CLKComplicationTemplateUtilitarianSmall
:
- Ploché – zobrazí obrázek a nějaký text na jednom řádku (text by měl být krátký).
- RingImage – zobrazí jeden obrázek s kruhem průběhu kolem něj.
- RingText – zobrazí jeden řádek textu s kruhem průběhu kolem něj.
- Čtverec – Zobrazí čtvercový obrázek (40px nebo 44px square for the 38mm nebo 42mm Apple Watch).
Utilitarian Large
Pro tento styl komplikací existuje pouze jedna šablona: CLKComplicationTemplateUtilitarianLargeFlat
.
Zobrazí jeden obrázek a nějaký text, a to vše na jednom řádku.