Fade UICollectionViewCells с перекрытием идет не так - PullRequest
0 голосов
/ 27 января 2019

У меня есть UICollectionView с некоторыми UICollectionViewCells.Клетки должны перекрывать друг друга, но также и немного исчезать в зависимости от их положения.Ниже приведен результат: enter image description here

Как можно избежать появления этих углов?(сверху от 3 до 4, или от 4 до 5, или все справа от 5 до 6).Они должны перекрываться, но это не должно влиять на изображение.

1 Ответ

0 голосов
/ 27 января 2019

Чтобы создать эффект затухания, я бы использовал наложение вроде этого:

  • Сохраните исходное изображение в переменной, чтобы иметь возможность сбросить процесс для других альфа-значений
  • Нарисуйте фигуру, имеющую тот же цвет, что и фон (альфа-цвет должен быть пропорционален положению элемента) поверх текущего изображения
  • Замените результирующее изображение текущим

Я приведу вам пример, чтобы лучше проиллюстрировать:

private UIImage baseImage; 

private UIImage ChangeImageColor(UIImage image, nfloat alpha, UIColor color)
{
   var alphaColor = color.ColorWithAlpha(alpha);

   if(baseImage == null)
   {
      baseImage = image;       
   }
   else
   {
      image = baseImage;
   }

   UIGraphics.BeginImageContextWithOptions(image.Size, false, UISCreen.MainScreen.Scale);

   var context = UIGraphics.GetCurrentContext();
   alphaColor.SetFill();

   context.TranslateCTM(0, image.Size.Height);
   context.ScaleCTM(new nfloat(1.0), new nfloat(-1.0));
   context.SetBlendMode(CGBlendMode.Lighten);

   var rect = new CGRect(0, 0, image.Size.Width, image.Size.Height);
   context.DrawImage(rect, image.CGImage);

   context.SetBlendMode(CGBlendMode.SourceAtop);
   context.AddRect(rect);
   context.DrawPath(CGPathDrawingMode.Fill);

   image = UIGraphics.GetImageFromCurrentImageContext();
   UIGraphics.EndImageContext();

   return image;
}



...