Suggerisco di creare una sottoclasse personalizzata di UIView (o UIImageView, se si desidera aggiungere la sfumatura a UIImageView). Nel metodo init della tua vista personalizzata, crea un CAGradientLayer e aggiungilo come sottolivello del livello della tua vista. Quindi imposta la sfumatura da nero a trasparente sul livello.
Probabilmente sarà necessario sovrascrivere layoutSubviews() e modificare le impostazioni sul livello sfumatura nel caso in cui i limiti della vista cambino.
EDIT:
ho creato un playground as a gist on github che è un esempio di lavoro di questo:
Il codice è simile al seguente:
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))
fonte
2015-04-14 17:07:43
... Per favore spiegare perché il downvote. Hai bisogno di modifiche? Se così fosse ... per favore, vi prego di farlo. –