Взаимодействие цвета фона между большими заголовками и заголовками по умолчанию

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

Применяя большой заголовок, представленный в 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];
}

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

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

0 ответов

Другие вопросы по тегам