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.
My Question:
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:In your situation, you could try:
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.
the above answer of
bringSubviewToFront(_:) sendSubviewToBack(_:)
has changed:
In Swift 3.0