[英]How can I programmatically add a Gradient Layer over an image in Swift?
我想在UIImage上放置一個預定義的透明到黑色漸變的圖層,其內容圖像通過網絡加載並在其上創建陰影效果。
我不想通過加載具有這種漸變的png來做到這一點。
我建議創建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))
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.