iOS 14.2 中的 SwiftUI PageTabView 性能问题滞后

r t*_* to 8 performance xcode ios swift swiftui

我将 TabView 与 PageTabViewStyle 一起使用,每个子视图都包含一个带有大数据集的列表视图。

仅在 iOS 14.2 上,页面转换似乎非常滞后。

但是,在具有少量数据的列表视图中,页面转换不会延迟。

我猜测 TabView 包含列表的性能将与数据量无关,因为列表行显示是惰性的。

所以,我相信这是错误或默认视图样式更改。

我期待着您的帮助来解决这个问题。谢谢

@available(iOS 14.0, *)
struct ContentView: View {
    @State var showHeart: Bool = false
    var body: some View {
        TabView{
            self.contents
            self.contents
        }
        .tabViewStyle(PageTabViewStyle())
    }
    var contents: some View{
        List(0..<1000){_ in
            Text("HELLO WORLD HELLOWORLD")
        }
    }
}
Run Code Online (Sandbox Code Playgroud)

spa*_*h21 1

尝试使用延迟加载。像这样的东西:https://www.hackingwithswift.com/quick-start/swiftui/how-to-lazy-load-views-using-lazyvstack-and-lazyhstack

正如您在视频中看到的: https: //streamable.com/7sls0w 该列表未正确优化。使用 . 创建您自己的列表LazyVStack。性能更好,过渡更顺畅。

我认为你不明白这个想法。解决问题的代码:

    @State var showHeart: Bool = false
    var body: some View {
        TabView {
            contents
            contentsSecond
        }
        .tabViewStyle(PageTabViewStyle())
    }
    
    var contents: some View {
        List(0..<10000) { _ in
            Text("HELLO WORLD HELLOWORLD")
        }
    }
    
    var contentsSecond: some View {
        return ScrollView {
            Divider()
            LazyVStack {
                ForEach(1...1000, id: \.self) { value in
                    Text("Luke, I am your father \(value)")
                        .padding(.all, 5)
                    Divider()
                }
            }
        }
    }
Run Code Online (Sandbox Code Playgroud)

  • @spacecash21 感谢您的回答。我已经尝试过了,并不能解决问题。 (2认同)