Animação de NSImage se perde após o arquivamento com NSKeyedArchiver
-
19-09-2019 - |
Pergunta
seguinte situação:
Eu tenho uma instância de minha NSObject
objeto sublcassed. Uma das suas propriedades é um NSImage
. Depois instanciating o objeto que eu convertê-lo com NSKeyedArchiver
aos dados, enviá-lo através da rede, desarquivar com NSKeyedUnarchiver
e exibir a imagem em um NSImageView
(setAnimates: yes). Até aqui não há problemas. A imagem pode ser exibida na outra máquina. Agora o problema:
Se eu enviar um GIF animado, não será animado. Não sei porquê ... Alguma idéia por que as estadias de animação embora? Obrigado!
Atualização
Se eu abrir a imagem animada antes de arquivá-lo a NSImageView
anima. O problema é talvez o arquivamento ...
UPDATE 2
Eu testei todo o fluxo de trabalho sem enviar os dados através da rede, apenas arquivar e desarmazenando-lo novamente. Como eu suspeitava, é um problema com NSKeyed (Un) Archiver.
A animação fica perdido. Mas o que fazer para evitar isso?
Solução
Eu simplesmente arquivar os dados da imagem original, em vez da instância de imagem.
Outras dicas
Por padrão, NSImage
não retém os dados da imagem da fonte original. O que é provavelmente a acontecer é que NSImage
está arquivando o bitmap estático de um quadro única e descartando o conteúdo original.
Se você chamar [yourNSImageObject setDataRetained:YES]
então o NSImage
deve pendurar aos dados originais (neste caso, o GIF animado). Eu sugiro que você tente fazer isso quando a imagem é criada pela primeira vez, e depois ver o que acontece quando é arquivado / unarchived.