【发布时间】:2020-06-10 06:22:30
【问题描述】:
我正在尝试使用列表进行滑动侧面板。问题是在带有安全区域指南的设备上,我无法在横向上将列表的宽度设置为 0。
struct ContentView: View {
var body: some View {
HStack {
Spacer()
List {
Text("1")
Text("2")
}
.frame(width:0)
}
.background(Color.green)
}
}
在纵向模式下,它看起来像:
横向:
知道如何完全隐藏列表吗?
在没有安全区域的设备上,一切正常,没有问题。
我发现解决方法是添加例如
Rectangle().frame(width: 0)
到同一个 HStack,那么在所有情况下都不会显示列表,但这看起来很奇怪。
6 月 10 日更新: 我一直在与 Apple DTS 团队讨论这个问题,他们证实我正在观察系统错误(现在通过 FB7729714 向工程团队报告)。 另一方面,他们指出我设置视图的宽度会导致子视图的重新布局,因此设置为 0 是更复杂的事情。因此建议在滑动视图等情况下使用位置和偏移量。
【问题讨论】:
-
您到底想达到什么目的?为什么
List必须在屏幕上可见? -
@pawello2222,正如我在开头所写的那样,在我的应用程序中,我有一个侧面板,可以通过按下控制按钮来关闭或打开(从右侧滑出或滑入)。一切都很顺利。但在测试过程中,我发现在类似 iPhoneX 的设备上的横向模式下,侧面板并没有完全隐藏,无论我做什么,它都会留在屏幕上。问题仅在于列表位于面板内部时。有趣的是 - 如果我将 Rectangle().frame(width:0) 添加到同一个 HStack 中,侧面板会很好地关闭。如果我添加间距 (HStack(spacing:0) {...) - 再次,列表是“不可隐藏”
标签: swiftui