UISplitView странный фон за панелью навигации - PullRequest
0 голосов
/ 05 июня 2018

У меня есть приложение со следующей архитектурой представления:

UITabBarController > UISplitViewController > UINavigationController > UIViewController
                                         \ 
                                           > UINavigationController > UIViewController

Всякий раз, когда я нажимаю контроллер представления, встроенный в контроллер навигации, в качестве подробного вида, я вижу странный нецветный вид, появляющийся позадиглавная панель навигации.Это происходит, когда мое приложение находится в светлом и темном режиме, как видно на скриншотах ниже.

Я воссоздал ту же архитектуру представления в тестовом приложении, и я не вижу появления нецветного представления, поэтому я не уверен, что его вызывает.

Вот некоторыекода, который я использую для создания светлого / темного режима:

extension UINavigationBar: RMDThemeable {

    func render(for theme: RMDTheme) {
        switch theme {
        case .light:
            barStyle = .default
        case .dark:
            barStyle = .black
        }
    }
}

class RMDCollectionViewController: UICollectionViewController {

    func render(for theme: RMDTheme) {
        switch theme {
        case .light:
            collectionView?.backgroundColor = UIColor.baseBackgroundLight
        case .dark:
            collectionView?.backgroundColor = UIColor.baseBackgroundDark
        }
    }
}

Вот скриншоты странного цвета:

No weird off-colour view Weird off-colour view Weird off-colour view in white

Вот отладчик представления:

Screenshot with prominent grey bar View debugger of prominent grey bar

1 Ответ

0 голосов
/ 12 июня 2018

Похоже, вы не проверили для свойства translucent UINavigationController, либо установите значение false, либо создайте пользовательские панели навигации с нужным цветом.

Чтобы установить translucent свойство, которое вы можете перейти на раскадровку и выбрать инспектор атрибутов контроллера навигации, сверху будет флажок с отметкой translucent снимите флажок или это можно сделать в коде, подобном

self.navigationController!.navigationBar.isTranslucent = false

Получить экземпляр вашего контроллера навигации и установить его в false.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...