如果你在 Xcode 12.5 上创建一个新项目并使用 SwiftUI 与 a andList
组合foreach
,.onmove
你会注意到 2 件烦人的事情:
1/ 即使未设置 ondelete,并且即使您明确指定.deleteDisabled(true)
,在 EditMode 时,列表行的左侧也会出现一个空格。有可能摆脱它吗?
2/ 移动图标的入口会在每个列表行上创建某种动画故障。分隔线强调了这一点。为什么触发EditMode时分隔符后面有空格?似乎在过去,分隔线宽度在此过渡期间保持不变。
如果你问我,之前的行为让我认为移动按钮嵌入在 ZStack 中,同时包装了移动按钮和列表。而现在它看起来像是在 HStack 中。无论如何,这些都不能解释即使它也被推动也不会出现在行左侧的故障。
我感到很困惑。
我很惊讶我无法通过 Google 找到有关该问题的任何信息。是我做错了什么吗?
问题的视频:Glitch,这里有一个简单的代码供您自己尝试。
感谢您的时间。
struct ContentView: View {
@State var listItems = ["Item 1", "Item 2", "Item 3"]
var body: some View {
NavigationView {
List {
ForEach(listItems, id: \.self) { (item) in
Text(item)
}.onMove { (indexSet, index) in
self.listItems.move(fromOffsets: indexSet,
toOffset: index)
}
}
.navigationBarTitle(Text("Nav Title"))
.deleteDisabled(true)
.navigationBarItems(trailing: EditButton())
}
}
}