Я создал вкладку, где первая вкладка содержит WKWebView
struct WebView : UIViewRepresentable {
let urlString : String
func makeUIView(context: Context) -> WKWebView {
return WKWebView()
}
func updateUIView(_ uiView: WKWebView, context: Context) {
uiView.load(URLRequest.init(url: URL.init(string: urlString)!))
}
}
Веб-просмотр используется следующим образом:
struct ContentView: View {
@State private var selection = 0
var body: some View {
TabView(selection: $selection){
NavigationView {
WebView(urlString: "...")
.navigationBarTitle("Intérieur", displayMode: .large)
}
.tabItem {
VStack {
Image(systemName:"...")
.foregroundColor(Color("brownGrey"))
Text("...")
.foregroundColor(Color("brownGrey"))
}
}.tag(0)
Но что бы я ни пытался, я не могу заставить NavigationView
оставаться в displayMode: .large
Панель навигации переходит в маленький режим, пока я не прокручиваю содержимое веб-просмотра, затем он переходит в большое.
Если заменить в приведенном выше коде веб-просмотр с простым Text("...")
работает как задумано. Вставка Text("...")
над веб-представлением также работает, но я хотел бы сделать это без введения искусственной прокладки.
Вот что происходит при запуске приложения:
Название отображается нормально, во время загрузки содержимого веб-просмотра:
После загрузки содержимого NavigationView уменьшает его размер:
Если я разверните веб-просмотр и пусть go NavigationView покажет, как я хочу, чтобы он показывал:
Мне кажется, что там, где происходит какое-то волшебство c система обнаруживает, что она находится на WKWebview
ниже панели навигации, и, следовательно, адаптирует ее поведение.
Есть решение?