J'ai réalisé une classe UIView personnalisée pour réaliser une sorte de trapèze; le code suivant, je l'avais utilisé pour réaliser la classe:Ajouter une couleur de dégradé à un UIView personnalisé
import UIKit
import ChameleonFramework
class PolygonalView: UIView
{
override init(frame: CGRect)
{
super.init(frame: frame)
}
required init?(coder aDecoder: NSCoder)
{
super.init(coder: aDecoder)
}
override func draw(_ rect: CGRect) {
guard let context = UIGraphicsGetCurrentContext() else { return }
context.beginPath()
context.move(to: CGPoint(x: rect.minX, y: rect.minY))
context.addLine(to: CGPoint(x: rect.minX, y: rect.maxY))
context.addLine(to: CGPoint(x: rect.maxX, y: 171))
context.addLine(to: CGPoint(x: rect.maxX, y: rect.minY))
context.closePath()
context.setFillColor(FlatSkyBlue().cgColor)
context.fillPath()
}
}
Puis dans mon UIViewController j'avais créer mon point de vue:
let pol = PolygonalView(frame: CGRect(x: 0, y: 0, width: self.view.bounds.width, height: 196))
pol.backgroundColor = UIColor.clear
self.view.addSubview(pol)
j'atteint mon objectif, eh oui! Mais un problème est survenu: si je règle un dégradé, ce dégradé recouvre tout le cadre rectangulaire de la vue. Les codes suivants et l'image ...
let gradientColor = CAGradientLayer()
gradientColor.frame = pol.bounds
gradientColor.colors = [FlatSkyBlue().cgColor, FlatSkyBlueDark().cgColor, FlatBlue().cgColor]
gradientColor.startPoint = CGPoint(x: 0, y: 0)
gradientColor.endPoint = CGPoint(x: 1, y: 1)
pol.layer.addSublayer(gradientColor)
Toutes les solutions pour adapter le gradient à la forme réelle de mon point de vue?
CALayers une propriété 'mask' que vous pouvez utiliser pour y parvenir. –