在 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 中的视图上添加渐变的主要内容,如果未能解决你的问题,请参考以下文章
向导航栏添加渐变将隐藏 iOS 13.0 + 中的栏按钮项目