如何在 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 单元格