如何更改 UIView 的 z 索引或堆栈顺序?
How do I change the z index or stack order of UIView?
我在现有控制器的顶部堆叠了一个 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 bringSubviewToFront:view];
我不知道 objective-c 并且是 Swift 的新手,如果有人能对此有所启发,我将不胜感激。
我的问题:
如何在 Swift 中更改 UIView 的 z 索引或堆栈顺序?
我建议查看 UIView
documentation,其中列出了几种用于处理子视图顺序的方法:
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
,您可以更改视图层次结构以更改显示在顶部的视图。这是一张图片来说明:
希望对您有所帮助。
上面
的回答
bringSubviewToFront(_:) sendSubviewToBack(_:)
已更改:
在Swift3.0
view.sendSubview(toBack:yourUIView)
view.bringSubview(toFront:yourUIView)
在Swift4.0 && Swift5.0
view.sendSubviewToBack(yourUIView)
view.bringSubviewToFront(yourUIView)
我在现有控制器的顶部堆叠了一个 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 bringSubviewToFront:view];
我不知道 objective-c 并且是 Swift 的新手,如果有人能对此有所启发,我将不胜感激。
我的问题:
如何在 Swift 中更改 UIView 的 z 索引或堆栈顺序?
我建议查看 UIView
documentation,其中列出了几种用于处理子视图顺序的方法:
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
,您可以更改视图层次结构以更改显示在顶部的视图。这是一张图片来说明:
希望对您有所帮助。
上面
的回答bringSubviewToFront(_:) sendSubviewToBack(_:)
已更改:
在Swift3.0
view.sendSubview(toBack:yourUIView)
view.bringSubview(toFront:yourUIView)
在Swift4.0 && Swift5.0
view.sendSubviewToBack(yourUIView)
view.bringSubviewToFront(yourUIView)