Controlli immagine watchOS in Xamarin

watchOS fornisce un WKInterfaceImage controllo per visualizzare immagini e animazioni semplici. Alcuni controlli possono anche avere un'immagine di sfondo (ad esempio pulsanti, gruppi e controller di interfaccia).

Apple Watch che mostra l'immagine Apple Watch con animazione semplice

Usare le immagini del catalogo asset per aggiungere immagini alle app Watch Kit. Sono necessarie solo @2x versioni, poiché tutti i dispositivi di controllo hanno display Retina.

Sono necessarie solo versioni 2x, poiché tutti i dispositivi watch hanno display Retina

È consigliabile assicurarsi che le immagini stesse siano le dimensioni corrette per lo schermo dell'orologio. Evitare di usare immagini di dimensioni non corrette (soprattutto quelle di grandi dimensioni) e ridimensionarle per visualizzarle sull'orologio.

È possibile usare le dimensioni di Watch Kit (38mm e 42mm) in un'immagine del catalogo asset per specificare immagini diverse per ogni dimensione di visualizzazione.

È possibile usare le dimensioni di Watch Kit 38mm e 42mm in un'immagine del catalogo asset per specificare immagini diverse per ogni dimensione di visualizzazione

Immagini sull'orologio

Il modo più efficiente per visualizzare le immagini consiste nell'includerle nel progetto dell'app watch e visualizzarle usando il SetImage(string imageName) metodo .

Ad esempio, l'esempio include una serie di immagini aggiunte a un catalogo asset nel progetto di app watch:

L'esempio WatchKitCatalog include una serie di immagini aggiunte a un catalogo asset nel progetto di app watch

Questi possono essere caricati e visualizzati in modo efficiente sull'orologio usando SetImage con il parametro nome stringa:

myImageControl.SetImage("Whale");
myOtherImageControl.SetImage("Worry");

Immagini di sfondo

La stessa logica si applica a per le SetBackgroundImage (string imageName) Buttonclassi , Groupe InterfaceController . Le prestazioni migliori si ottengono archiviando le immagini nell'app watch stessa.

Immagini nell'estensione Espressioni di controllo

Oltre al caricamento di immagini archiviate nell'app watch stessa, puoi inviare immagini dal bundle di estensione all'app watch per la visualizzazione (oppure puoi scaricare immagini da una posizione remota e visualizzarli).

Per caricare immagini dall'estensione espressioni di controllo, creare UIImage istanze e quindi chiamare SetImage con l'oggetto UIImage .

Ad esempio, l'esempio ha un'immagine denominata Bumblebee nel progetto di estensione espressioni di controllo:

L'esempio WatchKitCatalog ha un'immagine denominata Bumblebee nel progetto di estensione espressioni di controllo

Il codice seguente comporterà:

  • l'immagine caricata in memoria e
  • visualizzato sull'orologio.
using (var image = UIImage.FromBundle ("Bumblebee")) {
    myImageControl.SetImage (image);
}

Animazioni

Per animare un set di immagini, devono iniziare tutti con lo stesso prefisso e avere un suffisso numerico.

L'esempio include una serie di immagini numerate nel progetto dell'app watch con il prefisso Bus :

L'esempio WatchKitCatalog include una serie di immagini numerate nel progetto dell'app watch con il prefisso Bus

Per visualizzare queste immagini come animazione, caricare prima l'immagine usando SetImage con il nome del prefisso e quindi chiamare StartAnimating:

animatedImage.SetImage ("Bus");
animatedImage.StartAnimating ();

Chiamare StopAnimating sul controllo immagine per arrestare il ciclo di animazione:

animatedImage.StopAnimating ();

Appendice: Memorizzazione nella cache delle immagini (watchOS 1)

Importante

Le app watchOS 3 vengono eseguite interamente nel dispositivo. Le informazioni seguenti sono solo per le app watchOS 1.

Se l'applicazione usa ripetutamente un'immagine archiviata nell'estensione (o è stata scaricata), è possibile memorizzare nella cache l'immagine nella risorsa di archiviazione dell'orologio per migliorare le prestazioni per le visualizzazioni successive.

Usare il WKInterfaceDevicemetodo s AddCachedImage per trasferire l'immagine nell'espressione di controllo e quindi usare SetImage con il parametro image name come stringa per visualizzarla:

var device = WKInterfaceDevice.CurrentDevice;
using (var image = UIImage.FromBundle ("Bumblebee")) {
    if (!device.AddCachedImage (image, "Bumblebee")) {
            Console.WriteLine ("Image cache full.");
        } else {
            cachedImage.SetImage ("Bumblebee");
        }
    }
}

È possibile eseguire query sul contenuto della cache delle immagini nel codice usando WKInterfaceDevice.CurrentDevice.WeakCachedImages.

Gestione della cache

La cache è di circa 20 MB. Viene mantenuto tra i riavvii dell'app e quando riempie è responsabilità dell'utente cancellare i file usando RemoveCachedImage o RemoveAllCachedImages metodi sull'oggetto WKInterfaceDevice.CurrentDevice .