我试图将一个 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
和 sibling
共享同一个父级。当前代码不起作用,因为 opaqueView
(子级)和 popupView
(sbiling)有不同的父级。
这意味着 ① popupView
应该使用 keyWindow
作为父级,或者 ② opaqueView
应该使用 self.view
作为 parent 。由于您希望 opaqueView
高于一切,选项①是唯一的解决方案。
关于ios - 将 subview 置于一切之上,但置于另一个 UIView 之下,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/37555025/