Phil Legat
Phil Legat

Reputation: 43

Swift PageViewController gradient background

I have a PageViewController and need to set a gradient background to it. When using gradient background in normal ViewControllers, I use the following:

let layer = self.layer as! CAGradientLayer
layer.colors = [FirstColor.cgColor, SecondColor.cgColor]
layer.locations = [0.5]

when I try to use self.view.layer inside my PageViewController I get an error:

Could not cast value of type 'CALayer' (0x104f57900) to 'CAGradientLayer'

Can someone help me setting the background of a page view controller to an gradient?

Thanks

Upvotes: 0

Views: 652

Answers (1)

José Neto
José Neto

Reputation: 540

Hi you can create a UIView extension and just call like this:

view.applyGradient(colours: [UIColor.red, UIColor.green])

here the extension code

extension UIView {
    func applyGradient(colours: [UIColor]) -> Void {
        clipsToBounds = true
        let gradient: CAGradientLayer = CAGradientLayer()
        gradient.frame = self.bounds
        gradient.colors = colours.map { $0.cgColor }
        gradient.startPoint = CGPoint(x: 0, y: 0)
        gradient.endPoint = CGPoint(x: 1, y: 0)
        layer.insertSublayer(gradient, at: 0)
    }
}

with this code you can apply to UIButtons, UILabels, anything that extends from UIView

hope it helps

Upvotes: 1

Related Questions