在 Swift 中的视图上添加渐变

Posted

技术标签:

【中文标题】在 Swift 中的视图上添加渐变【英文标题】:Add Gradient on a view in Swift 【发布时间】:2015-02-13 11:12:45 【问题描述】:

以下代码使用 Objective-C 似乎可以工作,但它的 Swift 版本不工作。

我尝试了以下方法:

在集合视图单元格内添加渐变 在 viewController 中添加渐变 使用 UIColor 和 CGColor

使用 insertSubLayer

var mGradient = CAGradientLayer()
mGradient.frame = favoriteCell.mImageView.bounds
var colors = [CGColor]()
colors.append(UIColor(red: 0, green: 0, blue: 0, alpha: 1).CGColor)
colors.append(UIColor(red: 0, green: 0, blue: 0, alpha: 0).CGColor)

mGradient.startPoint = CGPointMake(0.1, 0.5)
mGradient.endPoint = CGPointMake(0.9, 0.5)

favoriteCell.mImageView.layer.addSublayer(mGradient)

【问题讨论】:

【参考方案1】:

斯威夫特 3

let mGradient = CAGradientLayer()
mGradient.frame = favoriteCell.mImageView.bounds
var colors = [CGColor]()
colors.append(UIColor(red: 0, green: 0, blue: 0, alpha: 1).cgColor)
colors.append(UIColor(red: 0, green: 0, blue: 0, alpha: 0).cgColor)

mGradient.startPoint = CGPoint(x: 0.1, y: 0.5)
mGradient.endPoint = CGPoint(x: 0.9, y: 0.5)
mGradient.colors = colors

favoriteCell.mImageView.layer.addSublayer(mGradient)

【讨论】:

【参考方案2】:

你需要设置渐变的颜色

mGradient.colors = colors

【讨论】:

我尝试将 OPs 代码与设置颜色相结合 - 它工作正常,如果它不会显示给你 你的问题可能是你的 imageView 有一个零帧或为零或它还有其他子层 这就是问题所在。谢谢【参考方案3】:

试试这个:

var mGradient : CAGradientLayer = CAGradientLayer()
mGradient.frame = favoriteCell.mImageView.bounds
mGradient.frame.origin = CGPointMake(0.0,0.0)

var colors = [CGColor]()
colors.append(UIColor(red: 0, green: 0, blue: 0, alpha: 1).CGColor)
colors.append(UIColor(red: 0, green: 0, blue: 0, alpha: 0).CGColor)

mGradient.locations = [0.0 , 1.0]
mGradient.startPoint = CGPointMake(0.1, 0.5)
mGradient.endPoint = CGPointMake(0.9, 0.5)
mGradient.frame = CGRect(x: 0.0, y: 0.0, width: favoriteCell.mImageView.frame.size.width, height: favoriteCell.mImageView.frame.size.height)

favoriteCell.mImageView.layer.insertSublayer(mGradient, atIndex: 0)

【讨论】:

嗯,这在 ios 8 中对我有用。也许看看这个:github.com/agibson73/Gradients/tree/master/Gradients

以上是关于在 Swift 中的视图上添加渐变的主要内容,如果未能解决你的问题,请参考以下文章

使用swift在选项卡式视图中的导航栏上添加按钮

向导航栏添加渐变将隐藏 iOS 13.0 + 中的栏按钮项目

如何在 SwiftUI 中添加与内容重叠的按钮上方的渐变? iOS 13

如何在 Swift 的视图层次结构顶部添加视图?

Swift:向按钮添加渐变后未显示按钮图像

Swift:向按钮添加渐变后未显示按钮图像