空视图占用空间

问题描述 投票:0回答:1

如果服务器没有数据,我想显示没有空格的 EmptyView()。

如果我将代码放入 VStack 中,则 EmptyView() 会占用该空间, 如果我把代码放在没有堆栈的情况下,那么API将调用无限多个。

我的代码如下:

VStack{
    if let arr = vm.arrMessages{
        getContent()
            .padding(.top)
    } else if vm.isLoading {
        ProgressView()
    } else if vm.isError {
        EmptyView()
    }
}

// Outside of VStack:

if let arr = vm.arrMessages{
    getContent()
        .padding(.top)
} else if vm.isLoading {
    ProgressView()
} else if vm.isError {
    EmptyView()
}

然后 API 调用无限时间。

谢谢你

ios swift iphone swiftui
1个回答
0
投票

当您在

VStack
内时,您可以简单地不放置任何东西来消除不需要的间距:

VStack {
    if let arr = vm.arrMessages{
        getContent()
            .padding(.top)
    } else if vm.isLoading {
        ProgressView()
    } else if vm.isError {
        /* Nothing Here */ // 👈 Return nothing
    }
}

您还可以为堆栈设置自定义间距,例如

0
,例如:

VStack(spacing: 0) { // 👈 The default value is dynamic value called `standard` which most of the time appears around 8 points
    ,,,
}
© www.soinside.com 2019 - 2024. All rights reserved.