Nano Hash - криптовалюты, майнинг, программирование

Невозможно установить цвет оттенка большой полосы заголовка iOS 11

У меня возникла проблема с восстановлением цвета bartint для большого заголовка iOS 11 после того, как панель навигации была прозрачной.

Этап воспроизведения:

  1. Установите фоновое изображение и тень панели навигации на пустой UIImage ().
  2. Панель навигации стала прозрачной.
  3. Установите фоновое изображение и тень панели навигации на ноль и установите обратно цвет оттенка панели.
  4. Большая панель навигации по заголовку стала белого цвета; если прокрутить вниз (присутствует старая панель навигации), вы увидите, что цвет оттенка полосы применяется только к панели навигации старого стиля.

Пробовал:

* Установите цвет фона навигации и цвет статуса на цвет оттенка полосы, да, он изменился, но без полупрозрачного визуального эффекта, как мы установили цвет оттенка полосы.

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

Исходный

введите здесь описание изображения

После перехода на страницу с прозрачной навигацией и возвращение

введите здесь описание изображения

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

class CustomNavigationController: UINavigationController {

override func viewDidLoad() {
    super.viewDidLoad()

    // Do any additional setup after loading the view.
}

override func didReceiveMemoryWarning() {
    super.didReceiveMemoryWarning()
    // Dispose of any resources that can be recreated.
}

override func pushViewController(_ viewController: UIViewController, animated: Bool) {

    super.pushViewController(viewController, animated: animated)
   self.setDefaultNavigationBar()

}

override func popViewController(animated: Bool) -> UIViewController? {
    self.setDefaultNavigationBar()
    return super.popViewController(animated: animated)

}

override func popToViewController(_ viewController: UIViewController, animated: Bool) -> [UIViewController]? {
    self.setDefaultNavigationBar()
    return super.popToViewController(viewController, animated: animated)

}

override func popToRootViewController(animated: Bool) -> [UIViewController]? {
    self.setDefaultNavigationBar()
    return super.popToRootViewController(animated: animated)
}


func setDefaultNavigationBar() {

    let navigationBarColor = UIColor(hexString: "#00b5baff")!
    self.navigationBar.setBackgroundImage(nil, for: .default)
    self.navigationBar.shadowImage = nil
    //self.navigationController?.navigationBar.backgroundColor = UIColor.clear
    //self.navigationController?.navigationBar.tintColor = UIColor.clear
    self.navigationBar.barTintColor = navigationBarColor

}

/*
// MARK: - Navigation

// In a storyboard-based application, you will often want to do a little preparation before navigation
override func prepare(for segue: UIStoryboardSegue, sender: Any?) {
    // Get the new view controller using segue.destinationViewController.
    // Pass the selected object to the new view controller.
}
*/

}



Ответы:


1

Попробуйте предоставить изображение transparent.png в качестве фонового изображения для достижения прозрачности. Это должно сработать. Если это не сработает, попробуйте использовать приведенный ниже код, чтобы просто обновить цвета больших заголовков.

self.navigationController?.navigationBar.largeTitleTextAttributes = 
[NSAttributedStringKey.foregroundColor: UIColor.blue, 
 NSAttributedStringKey.font: UIFont(name: fontName, size: 30) ?? 
                             UIFont.systemFont(ofSize: 30)]

Надеюсь это поможет!

04.01.2018
  • Не совсем понятно, прозрачный.png, о котором вы говорите, является полностью прозрачным файлом изображения? и как можно установить цвет оттенка панели, чтобы добиться цвета моего заголовка? 08.01.2018
  • да, transparent.png означает прозрачное изображение, которое следует применить к фону панели навигации, чтобы сделать его прозрачным, и да, barTintColor не был правильным предложением. Я удалил это из ответа. Код, приведенный выше для изменения цвета заголовка, должен работать. Разве это не работает для вас? 08.01.2018
  • Я думаю, вы неправильно поняли мой вопрос, мне удалось изменить цвет шрифта большого заголовка, в то время как цвет bartintcolor не может быть изменен обратно на большой заголовок. Я обновляю свой вопрос фотографиями и кодом. Спасибо, в любом случае! 10.01.2018

  • 2

    Не уверен, что это кому-то поможет, но именно это сработало для меня, когда оттенок фона навигации стал белым после выбора «Предпочитает большие заголовки»:

        let appearance = UINavigationBarAppearance()
        appearance.backgroundColor = FlatBlue()
        appearance.titleTextAttributes = [NSAttributedString.Key.foregroundColor : UIColor.white]
        navigationBar.standardAppearance = appearance
        navigationBar.scrollEdgeAppearance = appearance
    
    31.10.2019
    Новые материалы

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

    Как написать эффективное резюме
    Предложения по дизайну и макету, чтобы представить себя профессионально Вам не позвонили на собеседование после того, как вы несколько раз подали заявку на работу своей мечты? У вас может..

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

    Как я автоматизирую тестирование с помощью Jest
    Шутка для победы, когда дело касается автоматизации тестирования Одной очень важной частью разработки программного обеспечения является автоматизация тестирования, поскольку она создает..

    Работа с векторными символическими архитектурами, часть 4 (искусственный интеллект)
    Hyperseed: неконтролируемое обучение с векторными символическими архитектурами (arXiv) Автор: Евгений Осипов , Сачин Кахавала , Диланта Хапутантри , Тимал Кемпития , Дасвин Де Сильва ,..

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

    Обеспечение масштабируемости LLM: облачный анализ с помощью AWS Fargate и Copilot
    В динамичной области искусственного интеллекта все большее распространение получают модели больших языков (LLM). Они жизненно важны для различных приложений, таких как интеллектуальные..