I've stacked a UIView on top of an existing controller in an effort to create a gradient layer. However, when I load the view the new UIView (naturally) is on top of everything.
Relevant Code:
class ViewController: UIViewController {
@IBOutlet weak var myGradientView: GradientView!
override func viewDidLoad() {
super.viewDidLoad()
}
override func viewDidLayoutSubviews() {
self.myGradientView.gradientWithColors(UIColor.whiteColor(), UIColor.blueColor())
}
}
I've done some searching and I found an answer in Objective-C that explains to use:
[parentView bringSubviewToFront:view];
I don't know objective-c and am fairly new to Swift, if someone could shine some light on this I would appreciate it.
How do I change the z index or stack order of a UIView in Swift?
I would recommend looking in the UIView
documentation, where are several methods listed for the manipulation of the order of subviews:
bringSubviewToFront(_:) sendSubviewToBack(_:) removeFromSuperview() insertSubview(_:atIndex:) insertSubview(_:aboveSubview:) insertSubview(_:belowSubview:) exchangeSubviewAtIndex(_:withSubviewAtIndex:)
In your situation, you could try:
self.view.sendSubviewToBack(myGradientView)
// self is your view controller in this case.
Alternatively, because you created the myGradientView
in IB, you could change the view hierarchy to change which views appeared on top. Here's a picture to illustrate:
Hope that helps.