2016-05-31 2 views
0

Я пытаюсь разместить UIView - popupView вверху и еще один (opaqueView) под popupView, но выше всего остального. PopUpView связан с выходом.Принесите Subview выше всего, но ниже другого UIView

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 выше всего лишь (вид, TabBar, NavBar)

+0

Почему вы добавляете 'popupView' в' self.view', но 'opaqueView' в' keyWindow'? – kennytm

+0

Потому что, если я не добавляю 'opaqueView' в' keyWindow', 'opaqueView' не выходит за TabBar и NavigationBar. – senty

+1

Почему бы не добавить popupView в keyWindow? – kennytm

ответ

1

parent.insertSubview(child, belowSubview: sibling) работает, когда sibling является прямым потомком parent, так что child и sibling один и тем же родительским , Текущий код не работает, потому что opaqueView (ребенок) и popupView (sbiling) имеют разных родителей.

Это означает, что либо ① popupView следует использовать keyWindow в качестве родителя, или ② opaqueViewself.view следует использовать в качестве родителя. Поскольку вы хотите, чтобы opaqueView был выше всего, опция ① является единственным решением.