SwiftUI 2.0: как настроить панель навигации iOS 14 с помощью панели инструментов () без заголовка?

У меня есть следующая настройка для моего экрана приложения iOS 14:

import SwiftUI
import UIKit

struct MyNavigationView: View {
    
    init() { // Color Settings
        UINavigationBar.appearance().barTintColor = UIColor(named:"ToolbarBackgroundColor")
        UINavigationBar.appearance().tintColor = UIColor(named: "ToolbarForegroundColor")
        UINavigationBar.appearance().titleTextAttributes = [.foregroundColor: UIColor(named:"ToolbarForegroundColor")]
        UIToolbar.appearance().barTintColor = UIColor(named:"ToolbarBackgroundColor")
        UIToolbar.appearance().tintColor = UIColor(named: "ToolbarForegroundColor")
       }
       
    var body: some View {
        NavigationView {
            Text("Hello, SwiftUI 2.0 World!") // content
                .navigationBarTitleDisplayMode(.inline)
                .navigationTitle("MyApp") // navigation bar title
                .toolbar(content: {
                    // navigation bar leading item
                    ToolbarItem(placement: .navigationBarLeading) {
                        Text("Hi!").foregroundColor(Color("ToolbarForegroundColor"))
                    }
                    // navigation bar trailing item
                    ToolbarItem(placement: .navigationBarTrailing) {
                        VStack(content: {
                            Text("up").foregroundColor(Color("ToolbarForegroundColor"))
                            Text("down").foregroundColor(Color("ToolbarForegroundColor"))
                        })
                    }
                    // toolbar at the bottom of the screen
                    ToolbarItemGroup(placement: .bottomBar) {
                        Button(action:{
                            print("home")
                        }) {
                            Image(systemName: "house.fill")
                                .renderingMode(.template)
                                .foregroundColor(Color("ToolbarForegroundColor"))
                        }
                        Spacer()
                        Button(action:{
                            print("pages")
                        }) {
                            Image(systemName: "square.grid.3x2")
                                .renderingMode(.template)
                                .foregroundColor(.white)
                        }
                        Spacer()
                        Button(action:{
                            print("like")
                        }) {
                            Image(systemName: "star.fill")
                                .renderingMode(.template)
                                .foregroundColor(.white)
                        }
                        Spacer()
                        Button(action:{
                            print("user")
                        }) {
                            Image(systemName: "person.fill")
                                .renderingMode(.template)
                                .foregroundColor(.white)
                        }
                    }
                })
        }
    }
}

И работает до сих пор...

  • Но у меня есть несколько предупреждений для строки UINavigationBar.appearance().titleTextAttributes = [.foregroundColor: UIColor(named:"ToolbarForegroundColor")]. Если я заменю UIColor на Color, например UINavigationBar.appearance().titleTextAttributes = [.foregroundColor: Color("ToolbarForegroundColor")], предупреждения исчезнут, но у меня произойдет сбой... В чем проблема?

  • И я также хотел бы избавиться от заголовка панели навигации... Возможно ли это?


person Ailete619    schedule 16.02.2021    source источник


Ответы (1)


Я решил предупреждения, добавив значение по умолчанию в заголовок панели навигации:

UINavigationBar.appearance().titleTextAttributes = [.foregroundColor: UIColor(named:"ToolbarForegroundColor") ?? .white]

Все еще ищу, как избавиться от титула.

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

person Ailete619    schedule 16.02.2021