list - SwiftUI(List & ForEach):设备的旋转导致List中的当前位置丢失
问题描述
使用下面的 SwiftUI 代码(Xcode 12.2),在滚动浏览给定行的列表后,设备的旋转会导致跳转到其他行。
import SwiftUI
struct ContentView: View {
var body: some View {
List(10...90, id: \.self) { i in
VStack {
ForEach(1...9, id: \.self) { j in
Text("item \(i).\(j)")
}
}
}
}
}
struct ContentView_Previews: PreviewProvider {
static var previews: some View {
ContentView()
}
}
请问如何使当前行的显示对设备的旋转不敏感?
只有在每次旋转之间滚动列表时才会出现此问题。
解决方案
我认为这与列表偏移量有关,我不确定为什么。一种解决方案可能是改用 ScrollView,这似乎更具动态性。
var body: some View {
ScrollView {
ForEach(10...90, id: \.self) { i in
VStack {
ForEach(1...9, id: \.self) { j in
Text("item \(i).\(j)")
}
}
.frame(maxWidth: .infinity, alignment: .leading)
Divider()
}
}
}
推荐阅读
- ios - 即使我添加相机使用说明/照片库使用说明也不显示警报
- sonarqube - SonarJs 仍然显示有关 postMessage 跨域问题的警告
- firebase-test-lab - 测试中不能打电话
- sql-server - 一段时间后访问令牌连接失败,登录失败 NT AUTHORITY\ANONYMOUS LOGON 错误
- google-chrome - Mac VoiceOver 是否会限制其在 Chrome / Firefox 上的功能?
- regex - 正则表达式模式匹配单词的字母组合
- cv2 - OpenCV 图像形状错误 - :无法将输入数组从形状 (585,828,3) 广播到形状 (585,828,4)
- python - Python 2.7 搜索行或字符串以查找命中但不是单词的一部分
- perl - 有没有一种简单的方法可以在 perl 中将 unicode 字符串发送到 Windows 剪贴板?
- html - 动态引导表列:每列的宽度相同(无 Java 脚本)