2015-11-12 4 views
4

Я использовал IB для создания segue для представления другого представления popover.Как сделать UIPopoverPresentationController полупрозрачным для iOS 9

Я добавил код в prepareForSegue для удаления UIPopoverPresentationControllerDelegate для начального контроллера.

И я установил стиль презентации:

func adaptivePresentationStyleForPresentationController(controller: UIPresentationController, 
    traitCollection: UITraitCollection) -> UIModalPresentationStyle { 
     return UIModalPresentationStyle.None 
} 

Это дает мне хороший стандартный поповер.

Однако, я хочу сделать полупрозрачный popover.

Я попробовал несколько вещей:

  • Я установил цвет фона в IB, чтобы «очистить»
  • Я попытался установить альфа на представлении поповер

ответ

5

Чтобы иметь контроллер представления поверх другого с прозрачностью, вам нужно будет вернуть UIModalPresentationStyle.OverCurrentContext.

+1

Просто хочу добавить, что OverFullScreen работает –

+0

... О еще одна вещь, вам нужно будет установить фон Container View с некоторым цветом, который имеет альфа, и то же самое верно для представления, которое размещается внутри представления Container. –

1

Концепция: отрегулировать значение альфа-контроллера представления источника до того segueing в пирог, и обратно до 1,0 раз, когда он был уволен:

  1. Установите контроллер представления источника в качестве поповер делегата

    class MyVC: UIViewController, UIPopoverPresentationControllerDelegate { 
    
  2. Установите делегат и исходный вид альфа в «подготовке к Segue» функции (на пути к пирогу)

    override func prepare(for segue: UIStoryboardSegue, sender: Any?) { 
        let controller = segue.destination as! ISACGlossaryTVC 
        controller.popoverPresentationController!.delegate = self 
        self.view.alpha = 0.2; 
    } 
    
  3. Создать метод делегата popoverPresentationControllerDidDismissPopover и сбросить вид источника альфа назад, когда поп-над был уволен

    func popoverPresentationControllerDidDismissPopover(_ popoverPresentationController: UIPopoverPresentationController) { 
        self.view.alpha = 1.0; 
    } 
    
Смежные вопросы