MacOS: Allow third party libs to display animated images correctly (#6302)
authorDaniel Luberda <daniel.luberda@gmail.com>
Fri, 19 Jul 2019 10:43:39 +0000 (12:43 +0200)
committerRui Marinho <me@ruimarinho.net>
Fri, 19 Jul 2019 10:43:38 +0000 (11:43 +0100)
* Mac Animated NSImage support

Xamarin.Forms.Platform.MacOS/Renderers/ImageRenderer.cs
Xamarin.Forms.Platform.iOS/Renderers/ImageElementManager.cs

index 8b22895..ded656f 100644 (file)
@@ -83,7 +83,11 @@ namespace Xamarin.Forms.Platform.MacOS
                        await ImageElementManager.SetImage(this, Element, oldElement).ConfigureAwait(false);
                }
 
-               void IImageVisualElementRenderer.SetImage(NSImage image) => Control.Image = image;
+               void IImageVisualElementRenderer.SetImage(NSImage image)
+               {
+                       Control.Image = image;
+                       Control.Animates = image != null && image.Representations().Length > 1;
+               }
 
                bool IImageVisualElementRenderer.IsDisposed => _isDisposed;
 
index 2b6303d..ec17dbd 100644 (file)
@@ -115,14 +115,18 @@ namespace Xamarin.Forms.Platform.MacOS
                        var imageController = imageElement as IImageController;
 
                        var source = imageElement.Source;
-               
 #if __MOBILE__
                        if (Control.Image?.Images != null && Control.Image.Images.Length > 1)
                        {
                                renderer.SetImage(null);
-                       } else
+                       } 
+#else
+                       if (Control.Image != null && Control.Image.Representations().Length > 1)
+                       {
+                               renderer.SetImage(null);
+                       }
 #endif
-                       if (oldElement != null)
+                       else if (oldElement != null)
                        {
                                var oldSource = oldElement.Source;
                                if (Equals(oldSource, source))