ios - SwiftUI ForEach 垂直分隔线布局奇怪
问题描述
我是 SwiftUI 的初学者,在添加一些带有分隔符的 VStack 时遇到了 ForEach 布局的奇怪行为。
这是示例:
struct TestUserView: View {
@State var users: [String] = ["John Doe",
"Jane Doe",
"James Doe",
"Judy Doe"]
var body: some View {
VStack {
ForEach(users, id: \.self) { user in
VStack(spacing: 0) {
// Text("")
// .background(Color.blue)
// .frame(height: 0)
//
Rectangle()
.frame(height: 5)
HStack {
Text(user)
.font(.system(size: 55, weight: .bold))
Spacer()
}
}
.background(Color.green)
}
}
.background(Color.purple)
}
}
它看起来像这样:
看到这个紫色区域。我不希望它在那里。奇怪的是,如果在分隔符之前添加文本(无论这是矩形、分隔符还是 Color.black),它就会消失。只需取消注释注释的代码,它就会变得如预期的那样。
只是想知道这是错误还是我不了解 SwiftUI 布局。
如果这是预期的,请向我指出一些有用的文档。
使用 XCode 11.5
解决方案
这是不同类型视图之间默认间距的影响。
这是一个解决方案。使用 Xcode 11.4 / iOS 13.4 测试。
var body: some View {
VStack(spacing: 0) { // << explicit spacing !!
// .. other code
推荐阅读
- docker - 多阶段 docker 构建的工件缓存
- c# - 尝试将 enum system.array 转换为 enum List
在c#中 - javascript - FullCalendar Json 字符串引号属性
- apache-kafka - kafka ksql 提取 json 字段文字美元符号
- reactjs - React.PropTypes.func.isRequired 的问题
- vb.net - 视觉工作室发生了什么?每次点击都会重复表单代码
- codeigniter - 当我选择服务器日期和时间时,它给了我错误的时间
- android-studio - 删除后如何更新ListView
- javascript - 用内部滚动反应原生 tabview 滚动标签栏
- android - Android 布局组元素