async void SetImage(CustomSwitchCell cell, CellTableViewCell target)
        {
            var source = cell.ImageSource;

            target.ImageView.Image = null;

            IImageSourceHandler handler = GetHandler(source);

            if (source != null && handler != null)
            {
                UIImage uiimage;
                try
                {
                    uiimage = await handler.LoadImageAsync(source).ConfigureAwait(false);
                }
                catch (TaskCanceledException)
                {
                    uiimage = null;
                }

                NSRunLoop.Main.BeginInvokeOnMainThread(() =>
                {
                    target.ImageView.Image = uiimage;
                    target.SetNeedsLayout();
                });
            }
            else
            {
                target.ImageView.Image = null;
            }
        }
 // Start of BugFix
 static Action SetImage(CellTableViewCell target, UIImage uiimage)
 {
     return(() =>
     {
         if (target.Cell != null)
         {
             target.ImageView.Image = uiimage;
             target.SetNeedsLayout();
         }
         else
         {
             uiimage?.Dispose();
         }
     });
 }
示例#3
0
        private async void SetImage(ImageCell cell, CellTableViewCell target)
        {
            ImageSource imageSource = cell.ImageSource;

            if (imageSource != null)
            {
                UIImage uiimage;
                try
                {
                    uiimage = await cell.ImageSource.GetUIImage();
                }
                catch (TaskCanceledException)
                {
                    uiimage = null;
                }

                if (uiimage == null)
                {
                    if (cell.ImagePlaceholder != null)
                    {
                        uiimage = UIImage.FromBundle(cell.ImagePlaceholder.File);
                    }
                }

                NSRunLoop.Main.BeginInvokeOnMainThread(delegate
                {
                    if (uiimage != null && cell.ImageWidth > 0 && cell.ImageHeight > 0)
                    {
                        target.ImageView.Image = uiimage.Scale(new CGSize((nfloat)cell.ImageWidth, (nfloat)cell.ImageHeight), 0);
                    }
                    else
                    {
                        target.ImageView.Image = uiimage;
                    }

                    target.SetNeedsLayout();
                });
            }
            else
            {
                target.ImageView.Image = null;
            }
        }