Как можно изменить фон или цвет в панели навигации? - PullRequest
0 голосов
/ 26 июня 2019

В настоящее время я не могу найти какой-либо способ изменить цвет / фон панели навигации в SwiftUI. Любой совет?

Ответы [ 3 ]

1 голос
/ 27 июня 2019

Поместите Rectangle позади вашего NavigationView внутри ZStack:

ZStack {
    Rectangle().foregroundColor(.red)
    NavigationView {
        ...
    }
}
1 голос
/ 26 июня 2019

Чтобы изменить цвет панели навигации для всех контроллеров представления, необходимо установить его в AppDelegate.swift file

Добавьте следующий код к функции didFinishLaunchingWithOptions в AppDelegate.swift

var navigationBarAppearace = UINavigationBar.appearance()

navigationBarAppearace.tintColor = uicolorFromHex(0xffffff)
navigationBarAppearace.barTintColor = uicolorFromHex(0x034517)

Здесь атрибут tintColor меняет цвет фона панели навигации.

Атрибут

barTintColor влияет на цвет:

  • изображение заднего индикатора
  • названия кнопок
  • изображения кнопок

Бонус:

Изменить цвет заголовка панели навигации:

// change navigation item title color
navigationBarAppearace.titleTextAttributes =[NSForegroundColorAttributeName:UIColor.whiteColor()]

titleTextAttributes влияет на текст заголовка

Надеюсь, это поможет. :)

0 голосов
/ 27 июня 2019

До сих пор в SwiftUI нет определенного API для этой цели.Но вы можете использовать API внешнего вида.Вот пример кода.

import SwiftUI

struct ContentView : View {
    init() {
        UINavigationBar.appearance().titleTextAttributes = [NSAttributedString.Key.foregroundColor:UIColor.red]
        UINavigationBar.appearance().backgroundColor = .green
    }
    var body: some View {

        NavigationView {
            NavigationButton(destination: SecondPage(), label: {
                Text("Click")
            })
            .navigationBarTitle(Text("Title"), displayMode: .inline)
        }
    }
}
...