[英]On iPhoneX, Control Show / Hide NavigationBar and StatusBar separately
[英]Hide StatusBar And NavigationBar On MainView But Show It On DetailView In Swift
我写了两个 SwiftUI 视图,如下所示。 在这里,我想;
但是当我像下面这样实现它时,有些东西 go 错了。
FirstView.swift
import SwiftUI
struct FirstView: View {
var body: some View {
NavigationView {
NavigationLink(destination: SecondView()) {
Text("Main View")
}
}
.edgesIgnoringSafeArea(.all)
.navigationBarHidden(true)
.statusBar(hidden: true)
}
}
SecondView.swift
import SwiftUI
import UIKit
import WebKit
class SecondViewController: UIViewController, WKUIDelegate {
var webView: WKWebView!
override func viewDidLoad() {
super.viewDidLoad()
let myURL = URL(string: "https://www.stackoverflow.com")
let myRequest = URLRequest(url: myURL!)
webView.load(myRequest)
}
override func loadView() {
let webConfiguration = WKWebViewConfiguration()
webView = WKWebView(frame: .zero, configuration: webConfiguration)
webView.uiDelegate = self
view = webView
}
}
private struct SecondViewHolder: UIViewControllerRepresentable {
func makeUIViewController(context: Context) -> SecondViewController {
return SecondViewController()
}
func updateUIViewController(_ uiViewController: SecondViewController, context: Context) {
}
}
struct SecondView: View {
var body: some View {
VStack(spacing: 0) {
HeaderView()
SecondViewHolder()
FooterView()
}
.edgesIgnoringSafeArea(.all)
.navigationBarHidden(false)
.statusBar(hidden: true)
}
}
struct HeaderView: View {
var body: some View {
Text("Header Note")
.foregroundColor(.yellow)
.frame(maxWidth: .infinity, minHeight: 60)
.background(Color.red)
}
}
struct FooterView: View {
var body: some View {
Text("Footer Note")
.foregroundColor(.yellow)
.frame(maxWidth: .infinity, minHeight: 100)
.background(Color.red)
}
}
当我在 IOS 模拟器上运行它时:
观点看起来很不对劲。 在第二页中,我期待 NavigationBar 和 Header。 但我看不见他们。 我是 Swift 的新手。 你能帮我一下吗?
尝试以下
struct FirstView: View {
@State private var noBars = true
var body: some View {
NavigationView {
NavigationLink(destination:
SecondView()
.onAppear { self.noBars = false }
.onDisappear { self.noBars = true }
) {
Text("Main View")
}
}
.edgesIgnoringSafeArea(.all)
.navigationBarHidden(noBars)
.statusBar(hidden: noBars)
}
}
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.