这个问题可能是因为CameraView正在渲染一个从NavigationLink返回的SwiftUI视图,而相机会在后台默默运行,所以相机视图可能会与NavigationLink冲突。解决此问题的一种方法是在视图切换时暂停相机运行。
您可以在CameraView添加以下内容:
class CameraView: UIView {
...
var isSessionRunning = false
// Start the camera session
func startSession() {
...
session.startRunning()
isSessionRunning = true
}
// Stop the camera session
func stopSession() {
...
session.stopRunning()
isSessionRunning = false
}
}
struct ContentView: View {
@StateObject var camera = CameraModel()
var body: some View {
NavigationView {
NavigationLink(destination: AnotherView()) {
Text("Go to Another View")
}
.onDisappear {
camera.stopSession()
}
}
.onAppear {
camera.startSession()
}
}
}
在这里,我们使用了一个布尔变量isSessionRunning来确定相机是否正在运行。在CameraView类中添加了一个startSession方法和一个stopSession方法。在ContentView中,添加了一个onAppear回调,来启动相机会话,并在onDisappear回调中停止会话。
这个解决方案确保当视图消失时相机会话被正确地停止。