質問

次の状況:

私の例があります NSObject サブクラス化されたオブジェクト。そのプロパティの 1 つは、 NSImage. 。オブジェクトをインスタンス化した後、それを次のように変換します NSKeyedArchiver データに変換し、ネットワーク経由で送信し、アーカイブを解除します。 NSKeyedUnarchiver 画像を NSImageView (setAnimates:はい)。ここまでは何の問題もありません。他のマシンでも画像を表示できます。さて問題は:
アニメーション GIF を送信しても、アニメーションしません。理由がわからない...なぜアニメ化が進まないのか何か考えはありますか?ありがとう!

アップデート

アニメーション画像をアーカイブする前に開くと、 NSImageView それをアニメーション化します。問題はおそらくアーカイブです...

更新 2

データをネットワーク経由で送信せず、アーカイブとアーカイブ解除だけを行い、ワークフロー全体をテストしました。私が疑ったように、これは NSKeyed(Un)Archiver の問題です。
アニメーションが失われます。 しかし、これを防ぐにはどうすればよいでしょうか?

役に立ちましたか?

解決

画像インスタンスではなく、元の画像データをアーカイブするだけです。

他のヒント

デフォルトでは、 NSImage 元のソース画像データは保持されません。おそらく何が起こっているのかというと、 NSImage 1 つのフレームのみの静的ビットマップをアーカイブし、元のコンテンツを破棄します。

電話したら [yourNSImageObject setDataRetained:YES] そうして NSImage 元のデータ (この場合はアニメーション GIF) を保持する必要があります。イメージが最初に作成されるときにこれを実行して、アーカイブまたはアーカイブ解除されたときに何が起こるかを確認することをお勧めします。

ライセンス: CC-BY-SA帰属
所属していません StackOverflow
scroll top