Взаимодействие цвета фона между большими заголовками и заголовками по умолчанию - PullRequest
0 голосов
/ 16 октября 2018

Я менял цвет фона и текста панели навигации при навигации по страницам с несколькими заранее определенными темами, которые включают в себя несколько сплошных и прозрачных (прозрачных) цветов для фона.

При применении большого заголовка введенов iOS 11 для некоторых контроллеров представления я обнаружил некоторые ограничения, использующие большой заголовок:

  • Чтобы изменить цвет фона для большого заголовка, следует использовать свойство UINavigationBar.barTintColor.
  • Как этосвойство не работает для заголовка по умолчанию, фоновое изображение должно быть установлено с помощью UINavigationBar.setBackgroundImage(_:for:) передаваемого параметра UIBarMetrics.default.

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

Вот фрагмент для измененияТема панели навигации:

// This snippet is always called in -viewWillAppear(_:)
UINavigationBar *navigationBar = self.navigationController.navigationBar;
UIColor *backgroundColor; // can be clear, solid, or any other colors

navigationBar.backgroundColor = backgroundColor;

if (isTransparent) {
    [navigationBar setBackgroundImage:[UIImage new] forBarMetrics:UIBarMetricsDefault];
    [navigationBar setBackgroundImage:nil forBarMetrics:UIBarMetricsDefaultPrompt];
} else {
    [navigationBar setBackgroundImage:nil forBarMetrics:UIBarMetricsDefault];
    [navigationBar setBackgroundImage:[UIImage new] forBarMetrics:UIBarMetricsDefault];
}

После дальнейших исследований я нашлаt если -setBackgroundImage:forBarMetrics: вызывается с ненулевым UIImage и метриками UIBarMetricsDefault, его невозможно сбросить вообще.Весь стек навигации работает, поскольку в данной метрике есть набор изображений, а в других метриках ничего нет, в моем случае UIBarMetricsDefaultPrompt.

Кажется, что при изменении цвета навигации нельзя использовать большой заголовок и заголовок по умолчанию.bar .. Если у кого-то была такая же проблема, пожалуйста, дайте мне знать, если есть обходной путь для этих настроек.

...