7

Sto cercando di creare un popover simile a quello della sessione 214 del WWDC del 2014.iOS 8: Applicazione di UIVisualEffectView con effetto sfocatura a un PopOver modale in modalità compatta

Così ho iniziato a costruire la mia app utilizzando la IB avere due viste collegate da un segue "Presente Come Popover", come ad esempio:

enter image description here La vista popover contiene una visione del testo che riempie la sua superview, con il seguente vincoli: enter image description here

al fine di supportare la popover modale il seguente codice:

func adaptivePresentationStyleForPresentationController(controller: UIPresentationController) -> UIModalPresentationStyle { 
    return .OverFullScreen 
} 

func presentationController(controller: UIPresentationController, viewControllerForAdaptivePresentationStyle style: UIModalPresentationStyle) -> UIViewController? { 

    let navigationController = UINavigationController(rootViewController: controller.presentedViewController) 
    controller.presentedViewController.navigationItem.setRightBarButtonItem(UIBarButtonItem(barButtonSystemItem: UIBarButtonSystemItem.Done, target: self, action: "done"), animated: true) 

    return navigationController 
} 

Questo mi ha dato la seguente re sult: enter image description here

Quindi ho provato ad aggiungere UIVisualEffectView con l'effetto sfocatura. Inizialmente aggiungevo semplicemente una sottoview alla vista controller presentata e dopo aver controllato la gerarchia di visualizzazione mi sono reso conto che la mia vista effetti era in effetti sopra la mia vista testuale, ma la mia vista testuale era posizionata correttamente. Così ho provato l'insertSubview: atIndex: metodo come tale:

func presentationController(controller: UIPresentationController, viewControllerForAdaptivePresentationStyle style: UIModalPresentationStyle) -> UIViewController? { 

    let effectView = UIVisualEffectView(effect: UIBlurEffect(style: .Light)) as UIVisualEffectView 
    effectView.setTranslatesAutoresizingMaskIntoConstraints(false) 
    controller.presentedViewController.view.insertSubview(effectView, atIndex: 0) 

    let viewList : [String : UIView] = ["effectView" : effectView] 

    let navigationController = UINavigationController(rootViewController: controller.presentedViewController) 
    controller.presentedViewController.navigationItem.setRightBarButtonItem(UIBarButtonItem(barButtonSystemItem: UIBarButtonSystemItem.Done, target: self, action: "done"), animated: true) 


    controller.presentedViewController.view.addConstraints(NSLayoutConstraint.constraintsWithVisualFormat("H:|[effectView]|", options: nil, metrics: nil, views: viewList)) 

    controller.presentedViewController.view.addConstraints(NSLayoutConstraint.constraintsWithVisualFormat("V:|-[effectView]|", options: nil, metrics: nil, views: viewList)) 

    return navigationController 
} 

Ma io sono ancora in grado di presentare la vista testo definito nella IB: enter image description here

tramite la vista gerarchia vedo che il mio testo la vista, in qualche modo, viene spostata sotto la barra di navigazione quando inserisco UIVisualEffectView all'indice 0.

Qualche idea su come posso impostare in modo programmatico l'effetto sfocatura sotto il mio testo senza farlo sparire/spostarsi sotto la barra di navigazione?

Acclamazioni

risposta

0

fa questa funzione aiuto?

view.insertSubview(view: effectView, belowSubview: label)