【问题标题】:SwiftUI ScrollView inside list has terrible performance implications列表中的 SwiftUI ScrollView 具有可怕的性能影响
【发布时间】:2020-01-25 17:37:32
【问题描述】:

我有一个非常简单的 SwiftUI 视图,其中列出了一堆文本:

extension String: Identifiable {
  public var id: String { return self }
}

struct ContentView: View {
  var items: [String] = (0..<1000).map { $0.description }
  var body: some View {
    List(items) { str in
      HStack {
        Text(str)
      }
    }
  }
}

这段代码似乎运行良好,并为我提供了流畅的滚动性能。

如果我更改它以使 HStack 位于水平滚动的 ScrollView 内:

var body: some View {
  List(items) { str in
    ScrollView(.horizontal) {
      HStack {
        Text(str)
      }
    }
  }
}

当我在列表中上下滚动时,性能受到了巨大的影响,内存似乎无限增长。内存调试器中没有任何泄漏。

我想知道是否有人知道为什么性能影响如此之大,以及是否有任何解决办法。

更新:

HStack 和 Text 似乎与问题无关,即使是 scrollView 内的 Spacer 也会触发问题。

List(items) { _ in
  ScrollView(.horizontal) {
    Spacer()
  }
}

【问题讨论】:

    标签: ios swift performance swiftui swiftui-list


    【解决方案1】:

    似乎至少 List、ScrollView、Form 和 NavigationView 可能存在内存泄漏问题(请参阅 this question)。该问题的作者向 Apple (FB7318839) 提交了反馈。我也鼓励你这样做,希望这只是一个很快就会得到修复的错误。

    【讨论】:

    • 归档为 FB7324303
    猜你喜欢
    • 2017-05-15
    • 1970-01-01
    • 2020-06-26
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2014-03-18
    • 1970-01-01
    • 2012-05-25
    相关资源
    最近更新 更多