如何更改UIView的z索引或堆栈顺序?

Dan*_*ieu 37 z-index uiview swift ios8

我在现有控制器的顶部堆叠了一个UIView,以创建一个渐变层.但是,当我加载视图时,新的UIView(自然地)就在所有内容之上.

相关守则:

class ViewController: UIViewController {

    @IBOutlet weak var myGradientView: GradientView!

    override func viewDidLoad() {
        super.viewDidLoad()            
    }

    override func viewDidLayoutSubviews() {
        self.myGradientView.gradientWithColors(UIColor.whiteColor(), UIColor.blueColor())
    }
}
Run Code Online (Sandbox Code Playgroud)

我做了一些搜索,我在Objective-C中找到了一个解释使用的答案:

[parentView bringSubviewToFront:view];

我不知道Objective-c并且对Swift来说是相当新的,如果有人可以对此有所启发,我会很感激.

我的问题:

如何在Swift中更改UIView的z索引或堆栈顺序?

ABa*_*ith 74

我建议查看UIView 文档,其中列出了几种方法来操作子视图的顺序:

bringSubviewToFront(_:)
sendSubviewToBack(_:)
removeFromSuperview()
insertSubview(_:atIndex:)
insertSubview(_:aboveSubview:)
insertSubview(_:belowSubview:)
exchangeSubviewAtIndex(_:withSubviewAtIndex:)
Run Code Online (Sandbox Code Playgroud)

在您的情况下,您可以尝试:

self.view.sendSubviewToBack(myGradientView)
// self is your view controller in this case.
Run Code Online (Sandbox Code Playgroud)

或者,因为您myGradientView在IB中创建了IB,所以您可以更改视图层次结构以更改顶部显示的视图.这是一张图片来说明:

在此输入图像描述

希望有所帮助.

  • 哇...那次更新让我很难受到影响.我无法相信我没想到这一点 (6认同)

Hek*_*eki 9

以上答案

bringSubviewToFront(_:) sendSubviewToBack(_:)

已经改变:

在Swift 3.0中

view.sendSubview(toBack:yourUIView)
view.bringSubview(toFront:yourUIView)
Run Code Online (Sandbox Code Playgroud)