iOS 在 UIImageView 顶部淡化为黑色
iOS fade to black at top of UIImageView
我有一个 UITableView
,我的单元格 backgroundView
是一个 UIImageView
。我希望每张图片的顶部淡化为黑色,这样我就可以覆盖一些白色文本。
我查看了一些答案,例如 this,但 none 似乎有效。
在tableView(tableView: UITableView, cellForRowAtIndexPath indexPath: NSIndexPath)
我试过:
var imageView = UIImageView(image: image)
var gradient: CAGradientLayer = CAGradientLayer()
gradient.frame = imageView.frame
gradient.colors = [UIColor.blackColor(), UIColor.clearColor()]
gradient.locations = [0.0, 0.1]
imageView.layer.insertSublayer(gradient, atIndex: 0)
cell!.backgroundView = imageView
但是我没有看到渐变,并且与我删除渐变代码时没有任何区别。我的渐变是否位于图像下方?
如果我用 imageView.layer.mask = gradient
替换行 imageView.layer.insertSublayer(gradient, atIndex: 0)
那么我的单元格只是空白和白色(不再有图像)。
我忘了图层数组是如何排序的。但是,您应该使用 addSubLayer 将渐变层添加到图像视图层的顶部,而不是 insertSublayer:atIndex:您希望渐变层位于另一层顶部,以便它的非不透明部分覆盖图像视图。
在你的 gradient.colors
中你需要有 CGColor
的数组,所以:
gradient.colors = [UIColor.blackColor().CGColor, UIColor.clearColor().CGColor]
对于 Swift 3.0,需要进行一些细微的调整:
let gradient: CAGradientLayer = CAGradientLayer()
gradient.frame = imageView.frame
gradient.colors = [UIColor.black.cgColor, UIColor.clear.cgColor]
gradient.locations = [0.0, 0.1]
imageView.layer.insertSublayer(gradient, at: 0)
我有一个 UITableView
,我的单元格 backgroundView
是一个 UIImageView
。我希望每张图片的顶部淡化为黑色,这样我就可以覆盖一些白色文本。
我查看了一些答案,例如 this,但 none 似乎有效。
在tableView(tableView: UITableView, cellForRowAtIndexPath indexPath: NSIndexPath)
我试过:
var imageView = UIImageView(image: image)
var gradient: CAGradientLayer = CAGradientLayer()
gradient.frame = imageView.frame
gradient.colors = [UIColor.blackColor(), UIColor.clearColor()]
gradient.locations = [0.0, 0.1]
imageView.layer.insertSublayer(gradient, atIndex: 0)
cell!.backgroundView = imageView
但是我没有看到渐变,并且与我删除渐变代码时没有任何区别。我的渐变是否位于图像下方?
如果我用 imageView.layer.mask = gradient
替换行 imageView.layer.insertSublayer(gradient, atIndex: 0)
那么我的单元格只是空白和白色(不再有图像)。
我忘了图层数组是如何排序的。但是,您应该使用 addSubLayer 将渐变层添加到图像视图层的顶部,而不是 insertSublayer:atIndex:您希望渐变层位于另一层顶部,以便它的非不透明部分覆盖图像视图。
在你的 gradient.colors
中你需要有 CGColor
的数组,所以:
gradient.colors = [UIColor.blackColor().CGColor, UIColor.clearColor().CGColor]
对于 Swift 3.0,需要进行一些细微的调整:
let gradient: CAGradientLayer = CAGradientLayer()
gradient.frame = imageView.frame
gradient.colors = [UIColor.black.cgColor, UIColor.clear.cgColor]
gradient.locations = [0.0, 0.1]
imageView.layer.insertSublayer(gradient, at: 0)