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

eulz3vhy  于 2022-12-26  发布在  Swift
关注(0)|答案(2)|浏览(168)

我在一个已有的控制器上叠加了一个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())
    }
}

我做了一些搜索,我发现an answer in Objective-C解释使用:
[parentView将子视图前置:视图];
我不知道目标c,对斯威夫特来说是个新手,如果有人能给我一些启发,我会很感激的。

我的问题:

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

xwbd5t1u

xwbd5t1u1#

我建议查看UIViewdocumentation,其中列出了几种用于操作子视图顺序的方法:

bringSubviewToFront(_:)
sendSubviewToBack(_:)
removeFromSuperview()
insertSubview(_:atIndex:)
insertSubview(_:aboveSubview:)
insertSubview(_:belowSubview:)
exchangeSubviewAtIndex(_:withSubviewAtIndex:)

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

self.view.sendSubviewToBack(myGradientView)
// self is your view controller in this case.

或者,因为您在IB中创建了myGradientView,所以您可以更改视图层次结构以更改显示在顶部的视图。

希望能有所帮助。

1l5u6lss

1l5u6lss2#

上述的回答
第一个月
已更改:

在Swift 3.0中

view.sendSubview(toBack:yourUIView)
view.bringSubview(toFront:yourUIView)

在Swift 4.0和Swift 5.0中

view.sendSubviewToBack(yourUIView)
view.bringSubviewToFront(yourUIView)

相关问题