ios - 将 subview 置于一切之上,但置于另一个 UIView 之下

标签 ios swift uiview addsubview

我试图将一个 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) 仅在 siblingparent 的直接子级时起作用,因此 childsibling 共享同一个父级。当前代码不起作用,因为 opaqueView(子级)和 popupView(sbiling)有不同的父级。

这意味着 ① popupView 应该使用 keyWindow 作为父级,或者 ② opaqueView 应该使用 self.view 作为 parent 。由于您希望 opaqueView 高于一切,选项①是唯一的解决方案。

关于ios - 将 subview 置于一切之上,但置于另一个 UIView 之下,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/37555025/

相关文章:

ios - xcodebuild 停留在协同设计上?如何禁用提示?

macos - Swift 1.2 下标不可用

ios - 如何在 "idle timer"上使用计时器

ios - 如何以编程方式快速使用 UIView 覆盖整个屏幕

ios - 在 Storyboard中使用自动布局使 UIButtons 居中

ios - 设置 UIButton 大小以在 Storyboard 上显示

ios - FSCalender 事件在 swift 中显示

iphone - UICollectionViewCell 抖动

swift - 我如何将 NSDate() 分成几部分?

ios - 平铺背景图像在 View 中沿对角线移动