我使用下面的代码来显示一个与Vision框架一起工作的视图。该视图嵌入在NavigationView
中,该NavigationView
显示标题和用于关闭所显示视图的按钮。
.sheet(isPresented: $isVisionPresented) {
#if targetEnvironment(simulator)
NavigationView {
Text("Cannot run Vision framework in Simulator")
.navigationTitle("Sample title")
.navigationBarTitleDisplayMode(.inline)
.toolbar {
Button("Close") {
isVisionPresented = false
}
}
}
#else
NavigationView {
VisionView()
.navigationTitle("Sample title")
.navigationBarTitleDisplayMode(.inline)
.toolbar {
Button("Close") {
isVisionPresented = false
}
}
}
#endif
}
由于Vision框架在Simulator中不可用,因此我使用targetEnvironment(simulator)
来显示一个虚拟视图,仅用于测试目的。
有没有什么聪明的方法来避免两个视图中相同部分的重复代码?值得注意的是,VisionView
实现了UIViewControllerRepresentable
。
.navigationTitle("Sample title")
.navigationBarTitleDisplayMode(.inline)
.toolbar {
Button("Close") {
isVisionPresented = false
}
}
1条答案
按热度按时间pgvzfuti1#
最后我使用了以下利用
[ViewModifier][1]
的解决方案。可以像下面这样使用: