Compartilhar via


Controles de imagem do watchOS no Xamarin

O watchOS fornece um WKInterfaceImage controle para exibir imagens e animações simples. Alguns controles também podem ter uma imagem de plano de fundo (como botões, grupos e controladores de interface).

Apple Watch mostrando imagemApple Watch com animação simples

Use imagens do catálogo de ativos para adicionar imagens aos aplicativos do Watch Kit. Apenas @2x versões são necessárias, uma vez que todos os dispositivos de relógio têm ecrãs Retina.

Apenas 2x versões são necessárias, uma vez que todos os dispositivos de relógio têm monitores Retina

É uma boa prática garantir que as imagens em si tenham o tamanho correto para a tela do relógio. Evite usar imagens de tamanho incorreto (especialmente as grandes) e dimensioná-las para exibi-las no relógio.

Você pode usar os tamanhos do Watch Kit (38 mm e 42 mm) em uma imagem de catálogo de ativos para especificar imagens diferentes para cada tamanho de exibição.

Você pode usar os tamanhos 38mm e 42mm do Watch Kit em uma imagem de catálogo de ativos para especificar imagens diferentes para cada tamanho de exibição

Imagens no relógio

A maneira mais eficiente de exibir imagens é incluí-las no projeto do aplicativo de observação e exibi-las usando o SetImage(string imageName) método.

Por exemplo, o exemplo tem várias imagens adicionadas a um catálogo de ativos no projeto do aplicativo de observação:

O exemplo WatchKitCatalog tem várias imagens adicionadas a um catálogo de ativos no projeto do aplicativo de observação

Eles podem ser carregados e exibidos com eficiência no relógio usando SetImage o parâmetro string name:

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

Imagens de plano de fundo

A mesma lógica se aplica às SetBackgroundImage (string imageName) classes on the Button, Groupe InterfaceController . O melhor desempenho é alcançado armazenando as imagens no próprio aplicativo do relógio.

Imagens na extensão do relógio

Além de carregar imagens que são armazenadas no próprio aplicativo do relógio, você pode enviar imagens do pacote de extensão para o aplicativo do relógio para exibição (ou você pode baixar imagens de um local remoto e exibi-las).

Para carregar imagens da extensão de observação, crie UIImage instâncias e chame SetImage com o UIImage objeto.

Por exemplo, o exemplo tem uma imagem chamada Bumblebee no projeto de extensão de relógio:

O exemplo WatchKitCatalog tem uma imagem chamada Bumblebee no projeto de extensão do relógio

O código a seguir resultará em:

  • a imagem que está sendo carregada na memória, e
  • exibido no relógio.
using (var image = UIImage.FromBundle ("Bumblebee")) {
    myImageControl.SetImage (image);
}

Animações

Para animar um conjunto de imagens, todas elas devem começar com o mesmo prefixo e ter um sufixo numérico.

O exemplo tem uma série de imagens numeradas no projeto do aplicativo de observação com o prefixo Bus :

O exemplo WatchKitCatalog tem uma série de imagens numeradas no projeto do aplicativo de observação com o prefixo Bus

Para exibir essas imagens como uma animação, primeiro carregue a imagem usando SetImage com o nome do prefixo e, em seguida, chame StartAnimating:

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

Chame StopAnimating o controle de imagem para interromper o looping de animação:

animatedImage.StopAnimating ();

Apêndice: Armazenamento em cache de imagens (watchOS 1)

Importante

Os aplicativos watchOS 3 são executados inteiramente no dispositivo. As informações a seguir são apenas para aplicativos watchOS 1.

Se o aplicativo usar repetidamente uma imagem que está armazenada na extensão (ou foi baixada), é possível armazenar a imagem em cache no armazenamento do relógio, para aumentar o desempenho para exibições subsequentes.

Use o WKInterfaceDevicemétodo s para transferir a imagem para a inspeção e, em seguida, use SetImage com o parâmetro de AddCachedImage nome da imagem como uma cadeia de caracteres para exibi-la:

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

Você pode consultar o conteúdo do cache de imagem no código usando WKInterfaceDevice.CurrentDevice.WeakCachedImageso .

Gerenciando o cache

O cache tem cerca de 20 MB de tamanho. Ele é mantido em reinicializações do aplicativo e, quando ele é preenchido, é sua responsabilidade limpar arquivos usando RemoveCachedImage ou RemoveAllCachedImages métodos no WKInterfaceDevice.CurrentDevice objeto.