将淡入淡出效果应用于 UICollectionView 的顶部和底部

Iva*_*ino 1 calayer ios uicollectionview swift

我已经阅读了这里的示例,但我无法按照我想要的方式进行操作,不知何故,我的渐变示例卡在屏幕中间,无法按预期工作。

我有一个UICollectionView用垂直滚动填充整个屏幕的。

我希望顶部和底部UICollectionView为黑色,中间为透明(因为我使用的是黑色 blackgroundColor)。

我尝试应用渐变,但不知何故我无法实现我想要的。

这是我的代码:

let gradient = CAGradientLayer()
gradient.frame = view.bounds
gradient.colors = [UIColor.black.cgColor, UIColor.clear.cgColor, UIColor.black.cgColor]
gradient.startPoint = CGPoint(x: 1, y: 0)
gradient.endPoint = CGPoint(x: 1, y: 1)
view.layer.mask = gradient
Run Code Online (Sandbox Code Playgroud)

上面的代码将渐变放置在屏幕中间,但相反。如果淡入全黑,则屏幕顶部和底部以及中间部分是透明的。

我正在尝试创建这样的东西:

图像

感谢您的帮助

eno*_*ate 6

您可以通过更改颜色线来实现这一点:

\n
gradient.colors = [\n    UIColor(white: 1.0, alpha: 0).cgColor,\n    UIColor(white: 1.0, alpha: 1).cgColor,\n    UIColor(white: 1.0, alpha: 0).cgColor\n]\n
Run Code Online (Sandbox Code Playgroud)\n

或者,如果您想更好地控制渐变,您也可以使用下面的代码并调整位置和/或颜色 alpha 值:

\n
let gradient = CAGradientLayer()\ngradient.frame = view.bounds\ngradient.colors = [\n    UIColor(white: 1, alpha: 0).cgColor,\n    UIColor(white: 1, alpha: 1).cgColor,\n    UIColor(white: 1, alpha: 1).cgColor,\n    UIColor(white: 1, alpha: 0).cgColor\n]\ngradient.locations = [0, 0.4, 0.6, 1]\nview.layer.mask = gradient\n
Run Code Online (Sandbox Code Playgroud)\n

文档中的原因;

\n
\n

一个可选图层,其 alpha 通道用于遮盖图层\xe2\x80\x99s 内容。

\n

图层\xe2\x80\x99s Alpha 通道决定了图层\xe2\x80\x99s 内容和背景的显示程度。完全或部分不透明的像素允许底层内容显示出来,但完全透明的像素会阻挡该内容。

\n
\n