如何解决在NavigationUI,SwiftUI上创建视图
我正在创建嵌入在ZStack中的视图,如下所示:
ZStack(alignment: .top) {
content
if self.show {
VStack {
HStack {
这是一个viewModifier,因此我在主视图中使用例如.showView()
来调用它。
但是发生的是,如果我有NavigationView,则此视图仅显示在navigationView下方。 (我的视图上有一个NavigationViewTitle)。
如何解决此问题?我在考虑一些zIndex,但是它不起作用。我还考虑过该.showView()的更好放置,但无关紧要。
解决方法
这里是一种可能方法的演示(可以添加动画/过渡,但没有主题)。使用Xcode 11.4 / iOS 13.4编写并测试的演示
struct ShowViewModifier<Cover: View>: ViewModifier {
let show: Bool
let cover: () -> Cover
func body(content: Content) -> some View {
ZStack(alignment: .top) {
content
if self.show {
cover()
}
}
}
}
struct DemoView: View {
@State private var isPresented = false
var body: some View {
NavigationView {
VStack {
NavigationLink("Link",destination: Button("Details")
{ self.isPresented.toggle() })
Text("Some content")
.navigationBarTitle("Demo")
Button("Toggle") { self.isPresented.toggle() }
}
}
.modifier(ShowViewModifier(show: isPresented) {
Rectangle().fill(Color.red)
.frame(height: 200)
})
}
}
版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。