Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/apache-kafka/3.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Ios 如何全屏显示SwiftUI子视图?_Ios_Swift_Swiftui_Uikit - Fatal编程技术网

Ios 如何全屏显示SwiftUI子视图?

Ios 如何全屏显示SwiftUI子视图?,ios,swift,swiftui,uikit,Ios,Swift,Swiftui,Uikit,请看屏幕截图: 我将“顶部导航栏”标记为红色,我想删除它,因为有一个未使用的顶部导航栏 您必须知道,我使用故事板编写代码,但此特定页面包含SwiftUI视图的子视图 这是SwiftUI内容视图: 这是UIViewController,它保存着SwiftUI子视图: import UIKit import SwiftUI class StartViewController: UIViewController { @IBOutlet weak var btn: UIButton!

请看屏幕截图:

我将“顶部导航栏”标记为红色,我想删除它,因为有一个未使用的顶部导航栏

您必须知道,我使用故事板编写代码,但此特定页面包含SwiftUI视图的子视图

这是SwiftUI内容视图:

这是UIViewController,它保存着SwiftUI子视图:

import UIKit
import SwiftUI

class StartViewController: UIViewController {

    @IBOutlet weak var btn: UIButton!
    @IBOutlet weak var container: UIView!
    
    let contentView = UIHostingController(rootView: ContentView())
    override func viewDidLoad() {
        super.viewDidLoad()
        configureBackgroundGradient()
        addChild(contentView)
        view.addSubview(contentView.view)
        setupContraints()
    }

    fileprivate func setupContraints(){
        contentView.view.translatesAutoresizingMaskIntoConstraints = false
        contentView.view.topAnchor.constraint(equalTo: view.topAnchor).isActive = true
        contentView.view.bottomAnchor.constraint(equalTo: view.bottomAnchor).isActive = true
        contentView.view.leftAnchor.constraint(equalTo: view.leftAnchor).isActive = true
        contentView.view.rightAnchor.constraint(equalTo: view.rightAnchor).isActive = true
    }
    private func configureBackgroundGradient() {
      let backgroundGray = UIColor(red: 244 / 255, green: 247 / 255, blue: 250 / 255, alpha: 1)
      let gradientLayer = CAGradientLayer()
      gradientLayer.colors = [UIColor.white.cgColor, backgroundGray.cgColor]
      gradientLayer.frame = view.bounds
      view.layer.insertSublayer(gradientLayer, at: 0) //Background Color
    }
}
有人能帮忙吗?:)


谢谢大家!!请随时问我更多的截图或代码

您可以使用SwiftUI view Modifire fullScreenCover全屏显示视图

让我们使用简单的FullScreenModalView结构,它可以自动关闭,然后在按下另一个按钮时从ContentView中显示它:

struct FullScreenModalView: View {

    @Environment(\.presentationMode) var presentationMode

    var body: some View {
        Button("Dismiss Modal") {
            presentationMode.wrappedValue.dismiss()
        }
    }
}
下面是ContentView的代码-

struct ContentView: View {
    @State private var isPresented = false

    var body: some View {
        Button("Present!") {
            isPresented.toggle()
        }
        .fullScreenCover(isPresented: $isPresented, content: FullScreenModalView.init)
    }
}
很乐意帮忙


谢谢。

仅链接答案是不允许的。如果链接中有相关代码,请将其张贴在答案中。随着时间的推移,链接变得不活跃,答案变得过时。
struct ContentView: View {
    @State private var isPresented = false

    var body: some View {
        Button("Present!") {
            isPresented.toggle()
        }
        .fullScreenCover(isPresented: $isPresented, content: FullScreenModalView.init)
    }
}