如何在 CollectionView 单元内向图像添加渐变层

Posted

技术标签:

【中文标题】如何在 CollectionView 单元内向图像添加渐变层【英文标题】:How to add an Gradient Layer to Image inside an CollectionView Cell 【发布时间】:2019-02-19 07:12:44 【问题描述】:

我有自定义的集合视图单元格,其中包含 ImageViews 和标签。我想为图像视图添加渐变色。

我尝试了所有可能的解决方案,例如添加蒙版和向图像的子层添加渐变。但是没有任何效果,请指导我解决此问题

    let gradientLayer = CAGradientLayer()
    gradientLayer.frame = self.asanasImage.layer.bounds
    gradientLayer.colors = [UIColor.clear.cgColor,UIColor.black.cgColor]
    gradientLayer.locations = [0.7,1.2]
    self.asanasImage.layer.addSublayer(gradientLayer)

【问题讨论】:

请分享 imageView 在 collectionViewCell 中的样子的截图。你在哪里添加代码?在 awakeNib 或其他地方? 我在init()的代码中添加了 【参考方案1】:

喂!尝试在方法中为您的 imageView 设置渐变

cellForItemAt(_ indexpath: IndexPath) 方法作为其在集合 View Cell 中。

使用这个方法

func setGradientBackground(imageView: UIImageView, colorTop: UIColor, colorBottom: UIColor) 
        let gradientLayer = CAGradientLayer()
        gradientLayer.colors = [colorBottom.cgColor, colorTop.cgColor]
        gradientLayer.startPoint = CGPoint(x: 0.5, y: 1.0)
        gradientLayer.endPoint = CGPoint(x: 0.5, y: 0.0)
        gradientLayer.locations = [0, 1]
        gradientLayer.frame = self.view.bounds
        imageView.layer.insertSublayer(gradientLayer, at: 0)
    

最后在cellForItemAt(_ indexpath: IndexPath)里面设置imageView的渐变像这样

setGradientBackground(imageView: cell.your_image_View, colorTop: any_color, colorBottom: any_color)

根据您的需要和您想要的渐变颜色自定义方法。

希望我能提供帮助。如果它有效,请让我知道并投票!谢谢 :D

【讨论】:

感谢兄弟的帮助。我会尽力让你知道进展

以上是关于如何在 CollectionView 单元内向图像添加渐变层的主要内容,如果未能解决你的问题,请参考以下文章

如何快速裁剪collectionview单元格之外的部分图像

如何在不重新加载图像的情况下重新加载 collectionview 单元格

识别 CollectionView 中的单元格

下载图片后重新加载 CollectionView 的单元格

如何将图像从 CollectionView 传输/显示到另一个 ViewController

当 CollectionView 图像缩放时如何返回