Alexander lee
Alexander lee

Reputation: 41

CAGradientLayer: other UIObjects not showing up

When I use the CAGradientLayer on iOS to set up gradient for my viewcontroller, objects that I had previously placed using my interface builder are not showing up. When I take the gradientLayer function away, these objects show up. Also, when I add these objects programatically as a subview they show up in the iOS simulator. What's going on? Here is my gradientLayer code:

func setUpGradient(){
    let topColor=UIColor(red: 255/255, green: 149/255, blue: 56/255,alpha: 1)
let bottomColor=UIColor(red: 216/255, green: 57/255, blue: 177/255, 
alpha: 1)
    let gradientColors: [CGColor]=[topColor.cgColor,bottomColor.cgColor]
    var gradientLayer = CAGradientLayer()
    gradientLayer.frame = self.view.bounds
    gradientLayer.colors=gradientColors
    gradientLayer.startPoint=CGPoint(x: 0, y:0)
    gradientLayer.endPoint=CGPoint(x: 0, y:1)
    self.view.layer.addSublayer(gradientLayer)
}

Upvotes: 0

Views: 126

Answers (1)

Shehata Gamal
Shehata Gamal

Reputation: 100503

The reason is simple which is the gradient layer covers all the elements when you add them in IB by this line

self.view.layer.addSublayer(gradientLayer)

so you may insert it below them like this

self.view.layer.insertSublayer(gradientLayer,at:0)

Upvotes: 1

Related Questions