首页 > 解决方案 > SwiftUI macOS 视图在显示多个图表时开始滞后

问题描述

我在一个视图中显示多个图表。
图表只是框架中的路径,数据来自 csv 文件(不大于 400mb)。
这些图表显示在 LazyVGrid 内,整个视图位于滚动视图内。

加载视图大约需要 10 - 20 秒,但是当我开始滚动图表时,它变得非常滞后。
为了解决这个问题,我尝试将 .drawingGroup() 附加到图表视图,但几乎没有性能变化。

代码看起来像这样:

import SwiftUI


struct GroupView: View {

@State var chartData = [CGFloat]()

  let columns = [
        GridItem(.adaptive(minimum: 720))
 
       ]
    

  var body: some View {

VStack{

 ScrollView {
                
   LazyVGrid(columns: columns){

     CSVChart(data: chartData, chartName: String, x-yaxisName: [String](), lineColor: CGColor)
        .frame(width: 700, height: 300, alignment: .center)
        .drawingGroup() // there is as well no performance change when .drawingGroup()  is inside the chart view

        }

     
    }

}.onAppear{
   
 chartData = // get csv data logic

   }



}
}



我知道 csv 文件非常大,这会导致行为缓慢,但我认为其他应用程序在处理大文件时并没有那么滞后,所以这可能是可以修复的。
如果有人可以帮助我解决这个问题,那就太好了。

标签: swiftmacoscsvswiftuimetalkit

解决方案


将轴添加到您的 ScrollView 以判断它可以在哪一侧增长。

ScrollView(.vertical) {

推荐阅读