Dun*_*n C 13
我建议创建UIView的自定义子类(或UIImageView,如果要添加渐变的是UIImageView).在自定义视图的init方法中,创建一个CAGradientLayer并将其添加为视图图层的子图层.然后在图层上设置黑色到透明渐变.
您可能需要覆盖layoutSubviews()并更改渐变图层上的设置,以防视图的边界发生变化.
编辑:
代码如下所示:
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(red: 0, green: 0, blue: 0, alpha: 0.3).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))
Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
7229 次 |
| 最近记录: |