【问题标题】:List clipping issue (bug with SwiftUI?)列表剪辑问题(SwiftUI 的错误?)
【发布时间】:2021-07-23 19:54:19
【问题描述】:

我在 macOS Montery Beta 3 中遇到了 List 的奇怪问题,其中一些列表项目被剪裁,您必须上下滚动才能取消剪裁。

示例: https://imgur.com/a/P0TUt85

复制

  1. 新建一个空白的 SwiftUI macOS 项目
  2. 粘贴以下代码:
struct Bla: Identifiable {
    var text: String
    var subtext: String
    var id = UUID()
}

struct ContentView: View {
    @State var data = (0..<100).map { Bla(text: "Text: \($0)", subtext: "Subtext: \($0)")}
    var body: some View {
        NavigationView {
            List(data) { item in
                VStack(alignment: .leading) {
                    Text(item.text)
                    Text(item.subtext)
                        .foregroundColor(.secondary)
                }
            }
            .toolbar {
                Button(action: {
                    var offset = 0
                    for i in 0..<data.count {
                        if i % 2 == 0 {
                            continue
                        }
                        data.remove(at: i - offset)
                        offset += 1
                    }
                }) {
                    Image(systemName: "plus")
                }
            }
        }
    }
}
  1. 运行应用程序,并将列表滚动到中间。
  2. 按工具栏上的加号按钮。这只是删除了一半的项目。
  3. 您应该会看到剪辑问题。向上和向下滚动可以修复它。

这是我的代码还是 SwiftUI 的 List 的问题?

【问题讨论】:

  • 使用 macOS build 21A5284e 并且无法复制。
  • @RTXGamer 奇怪。我正在使用相同的版本及其复制。你使用的是什么版本的 Xcode?此外,有时它不起作用,但 90% 的时间它都起作用。
  • Xcode 版本 13.0 beta 3 (13A5192j)
  • @RTXGamer 同样。在按下加号按钮之前,您是否确保先滚动到列表末尾附近? 如果你在列表的末尾,它就不起作用
  • yup 滚动到底部并单击工具栏按钮,没有观察到剪辑

标签: swift macos swiftui


【解决方案1】:

添加.listStyle 后我看不到剪辑问题,试试这个:

    List(data) { item in
        VStack(alignment: .leading) {
            Text(item.text)
            Text(item.subtext)
                .foregroundColor(.secondary)
        }
    }.listStyle(SidebarListStyle())

【讨论】:

  • 行得通!非常感谢!这是 SwiftUI 的错误吗?
  • @newswiftuser 是的,它可能会在稳定版本中得到修复。
  • 我真的希望如此。
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2011-05-12
  • 2011-08-08
  • 1970-01-01
  • 2022-12-10
相关资源
最近更新 更多