большая панель навигации backGround получает чистый цвет при переходе назад к корневому представлению ControlCler - PullRequest
0 голосов
/ 22 мая 2018

Привет, ребята, я использовал largeNavigationBar, и все в порядке, пока я не проведу пальцем назад к контроллеру корневого представления, и большая навигация не получит чистый цвет неприятным способом.вот код:

func largeNavigationTitle() {

    self.navigationController?.view.backgroundColor = VVUtility.navigationBarColor()
    let productTitle = request?.product?.name
    self.navigationItem.title = "\(productTitle ?? " ")".localized()
    self.navigationController?.navigationBar.titleTextAttributes = [NSAttributedStringKey.foregroundColor : UIColor.white, NSAttributedStringKey.font : VVUtility.normalFontWithPlusSize(increaseSize: -2.0)]

    if #available(iOS 11.0, *) {
        self.navigationController?.navigationBar.prefersLargeTitles = true
        self.navigationController?.navigationBar.backgroundColor = VVUtility.splashBackGroundColor()
        self.navigationController?.navigationBar.largeTitleTextAttributes = [NSAttributedStringKey.foregroundColor : UIColor.white, NSAttributedStringKey.font : VVUtility.normalFontWithPlusSize(increaseSize: 0.0)]
    } else {
        // Fallback on earlier versions
    }

}

Я вспомнил largeNavigationTitle() в viewWillAppear и viewDidLoad

ОБНОВЛЕНИЕ

здесьснимок экрана с двумя состояниями: до считывания: imgur.com / a / ZcSOrov при пролистывании: imgur.com / a / DYeeot8

Ответы [ 3 ]

0 голосов
/ 30 августа 2018

Это фактически ваша навигационная панель, переключающаяся обратно в режим маленькой панели на нижнем контроллере.

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

Ваша иерархия будет выглядеть следующим образом:

image

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

extendedLayoutIncludesOpaqueBars = true

Это мгновенно заставляет иерархию теперь выглядеть так:

image2

Теперь вы больше не должны получать пробел - но у вас могут быть проблемы с элементами пользовательского интерфейса, идущими под планкой.Вы можете справиться с этим, используя вставки Безопасной области и настраивая макет по мере необходимости, использование edgesForExtendedLayout также может помочь в зависимости от вашего макета.

TL; DR Use extendedLayoutIncludesOpaqueBars = true

0 голосов
/ 31 августа 2018

Попробуй это.Он должен установить цвет панели навигации вашего корневого контроллера View на тот, который вы хотели:

func largeNavigationTitle() {

    self.navigationController?.view.backgroundColor = VVUtility.navigationBarColor()
   //add the two lines below
    self.navigationController?.navigationBar.barTintColor = VVUtility.navigationBarColor()
    self.navigationController?.navigationBar.isTranslucent = false

    let productTitle = request?.product?.name
    self.navigationItem.title = "\(productTitle ?? " ")".localized()
    self.navigationController?.navigationBar.titleTextAttributes = [NSAttributedStringKey.foregroundColor : UIColor.white, NSAttributedStringKey.font : VVUtility.normalFontWithPlusSize(increaseSize: -2.0)]

    if #available(iOS 11.0, *) {
        self.navigationController?.navigationBar.prefersLargeTitles = true
        self.navigationController?.navigationBar.backgroundColor = VVUtility.splashBackGroundColor()
        self.navigationController?.navigationBar.largeTitleTextAttributes = [NSAttributedStringKey.foregroundColor : UIColor.white, NSAttributedStringKey.font : VVUtility.normalFontWithPlusSize(increaseSize: 0.0)]
    } else {
        // Fallback on earlier versions
    }

}
0 голосов
/ 22 мая 2018

Вы пробовали это в своем коде?

self.navigationController.navigationBar.translucent = NO;
...