ios - change - Изменение фона UIPopoverView+цвет стрелки



swift navigation bar background color (2)

Есть ли способ просто изменить цвет фона UIPopoverView (включая его стрелку) на iOS8?

(Я прочитал пару статей по настройке «UIPopoverControllers». Это тоже относится к этому вопросу, то есть ответ «нет»?)

Разве это не то, что я должен уметь решать в методе prepareForSegue, запускающем popover? Как я могу достичь соответствующего представления, чтобы изменить его внешний вид?


Answer #1

Вы можете просто изменить popover следующим образом:

    let popoverViewController = self.storyboard?.instantiateViewControllerWithIdentifier("popoverSegue")
    popoverViewController!.popoverPresentationController?.delegate = self
    popoverViewController!.modalPresentationStyle = .Popover


    let popoverSize = CGSize(width: 150, height: 60)
    popoverViewController!.preferredContentSize = popoverSize
    let popover = popoverViewController!.popoverPresentationController
    popover?.delegate = self
    popover?.permittedArrowDirections = .Up
    popover?.sourceView = self.view

    //change background color with arrow too!
    popover?.backgroundColor = UIColor.whiteColor()
    popover?.sourceRect = CGRect(x: self.view.frame.width, y: -10, width: 0, height: 0)
    presentViewController(popoverViewController!, animated: true, completion: nil)

Answer #2

Я нашел решение. Подкласс не нужен больше с iOS8! Фон может быть доступен и изменен таким образом изнутри tableview -> navigation -> popoverPresentationController

    self.navigationController?.popoverPresentationController?.backgroundColor = UIColor.redColor()

Дополнительная информация об этом на сессии WWDC 214.





uipopoverbackgroundview