将子视图置于一切之上,但置于另一个 UIView 之下
Bring Subview Above Everything But Below Another UIView
我试图将一个 UIView
- popupView 放在顶部,另一个 UIView
(opaqueView) 在 popupView 下面但在其他任何东西之上。 PopUpView 与 Outlet 相连。
func display() {
popupView.center = CGPointMake(CGRectGetMidX(self.view.bounds), tableView.center.y);
self.view.addSubview(popupView)
popupView.clipsToBounds = true
let opaqueView = UIView()
let screenSize: CGRect = UIScreen.mainScreen().bounds
opaqueView.frame.size = CGSize(width: screenSize.width, height: screenSize.height)
opaqueView.alpha = 0.6
UIApplication.sharedApplication().keyWindow!.insertSubview(opaqueView, belowSubview: popupView)
}
使用这种方法会导致 opaqueView 覆盖所有内容,包括 popupView。相反,我想让 popupView 高于 opaqueView,但让 opaqueView 高于其他一切 (view, TabBar, NavBar)
parent.insertSubview(child, belowSubview: sibling)
仅当 sibling
是 parent
的直接 child 时有效,因此 child
和 sibling
共享相同parent。当前代码不起作用,因为 opaqueView
(child)和 popupView
(sbiling)具有不同的 parent。
这意味着①popupView
应该使用keyWindow
作为parent,或者②opaqueView
应该使用self.view
作为parent .既然你想要opaqueView
凌驾于一切之上,选项①是唯一的解决方案。
我试图将一个 UIView
- popupView 放在顶部,另一个 UIView
(opaqueView) 在 popupView 下面但在其他任何东西之上。 PopUpView 与 Outlet 相连。
func display() {
popupView.center = CGPointMake(CGRectGetMidX(self.view.bounds), tableView.center.y);
self.view.addSubview(popupView)
popupView.clipsToBounds = true
let opaqueView = UIView()
let screenSize: CGRect = UIScreen.mainScreen().bounds
opaqueView.frame.size = CGSize(width: screenSize.width, height: screenSize.height)
opaqueView.alpha = 0.6
UIApplication.sharedApplication().keyWindow!.insertSubview(opaqueView, belowSubview: popupView)
}
使用这种方法会导致 opaqueView 覆盖所有内容,包括 popupView。相反,我想让 popupView 高于 opaqueView,但让 opaqueView 高于其他一切 (view, TabBar, NavBar)
parent.insertSubview(child, belowSubview: sibling)
仅当 sibling
是 parent
的直接 child 时有效,因此 child
和 sibling
共享相同parent。当前代码不起作用,因为 opaqueView
(child)和 popupView
(sbiling)具有不同的 parent。
这意味着①popupView
应该使用keyWindow
作为parent,或者②opaqueView
应该使用self.view
作为parent .既然你想要opaqueView
凌驾于一切之上,选项①是唯一的解决方案。