ios – 我如何以编程方式在Swift中的图像上添加渐变层?
发布时间:2020-12-14 19:16:19 所属栏目:百科 来源:网络整理
导读:我想在UI Image上放置一个预定义的透明到黑色渐变的图层,其内容图像通过网络加载 在它上面创造一个阴影的效果. 我不想通过加载具有这种渐变的png来做到这一点. 解决方法 我建议创建UIView的自定义子类(或UIImageView,如果要添加渐变的是UIImageView).在自定
我想在UI
Image上放置一个预定义的透明到黑色渐变的图层,其内容图像通过网络加载
在它上面创造一个阴影的效果. 我不想通过加载具有这种渐变的png来做到这一点. 解决方法
我建议创建UIView的自定义子类(或UIImageView,如果要添加渐变的是UIImageView).在自定义视图的init方法中,创建一个CAGradientLayer并将其添加为视图图层的子图层.然后在图层上设置黑色到透明渐变.
您可能需要覆盖layoutSubviews()并更改渐变图层上的设置,以防视图的边界发生变化. 编辑: 我创建了一个playground as a gist on github,这是一个工作的例子: 代码如下所示: import UIKit import AVFoundation class ImageViewWithGradient: UIImageView { let myGradientLayer: CAGradientLayer override init(frame: CGRect) { myGradientLayer = CAGradientLayer() super.init(frame: frame) self.setup() } required init(coder aDecoder: NSCoder) { myGradientLayer = CAGradientLayer() super.init(coder: aDecoder) self.setup() } func setup() { myGradientLayer.startPoint = CGPoint(x: 0,y: 0) myGradientLayer.endPoint = CGPoint(x: 1,y: 1) let colors: [CGColorRef] = [ UIColor.clearColor().CGColor,UIColor(red: 0,green: 0,blue: 0,alpha: 0.3).CGColor,UIColor(red: 1,green: 1,blue: 1,alpha: 0.5).CGColor,UIColor.clearColor().CGColor ] myGradientLayer.colors = colors myGradientLayer.opaque = false myGradientLayer.locations = [0.0,0.3,0.5,0.7,1.0] self.layer.addSublayer(myGradientLayer) } override func layoutSubviews() { myGradientLayer.frame = self.layer.bounds } } var aView = ImageViewWithGradient(frame: CGRect(x: 0,y: 0,width: 500,height: 500)) (编辑:李大同) 【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容! |