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).
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.
È 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.
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:
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)
Button
classi , Group
e 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:
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 :
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 WKInterfaceDevice
metodo 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
.