为什么ZStack只在我的ContentView中工作?

时间:2020-08-07 21:55:30

标签: ios swift swiftui

我有一个HomeView,它基本上是MapView和Circle的ZStack,并且我关注的是https://www.hackingwithswift.com/books/ios-swiftui/advanced-mkmapview-with-swiftui

当我在ContentView中使用ZStack时,地图和圆圈都会出现。但是,我已经设置了身份验证,因此当我执行以下操作时(下面),我只会看到地图,而看不到圆圈:

ContentView.swift

import SwiftUI

struct ContentView: View {
    @EnvironmentObject var auth: AuthenticationState

    var body: some View {
        ZStack {
            if auth.user != nil {
                HomeView()
            } else {
                GatekeeperView()
            }
        }
    }
}

HomeView.swift

struct HomeView: View {
    var body: some View {
        ZStack {
            Circle()
                .fill(Color.blue)
                .opacity(1)
                .frame(width: 32, height: 32)
            
            MapView().edgesIgnoringSafeArea(.all)
        }
    }
}

获得授权的用户可以查看HomeView。不幸的是,这个圆圈没有出现。

1 个答案:

答案 0 :(得分:1)

尝试为.zIndex()中的视图显式设置ZStack

struct HomeView: View {
    var body: some View {
        ZStack {
            Circle()
                .fill(Color.blue)
                .opacity(1)
                .frame(width: 32, height: 32)
                .zIndex(1)

            MapView().edgesIgnoringSafeArea(.all)
                .zIndex(2)
        }
    }
}

或者为您的ZStack重新排序:

struct HomeView: View {
    var body: some View {
        ZStack {
            MapView().edgesIgnoringSafeArea(.all)

            Circle()
                .fill(Color.blue)
                .opacity(1)
                .frame(width: 32, height: 32)
        }
    }
}