繁体   English   中英

将Subview置于一切之上,但置于另一个UIView之下

[英]Bring Subview Above Everything But Below Another UIView

我试图将一个UIView -popupView放在顶部,并在popupView下方但在其他任何上方放置另一个UIView (opaqueView)。 PopUpView与插座连接。

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在内的所有内容上。 相反,我希望在opaqueView上方具有popupView,但在所有其他内容(视图,TabBar,NavBar)上方保持opaqueView

parent.insertSubview(child, belowSubview: sibling)仅在siblingparent的直接子代时起作用,以便childsibling共享同一父代。 当前代码不起作用,因为opaqueView (子级)和popupView (sbiling)具有不同的父级。

这意味着要么① popupView应该使用keyWindow作为母体,或② opaqueView应该使用self.view作为父节点。 由于您希望opaqueView在一切之上,因此选项①是唯一的解决方案。

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM