【发布时间】:2024-05-01 12:15:16
【问题描述】:
我在一个视图中显示多个图表。
图表只是框架中的路径,数据来自 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 文件很大,这会导致运行缓慢,但我认为其他应用程序在处理大文件时并没有那么迟钝,所以这可能是可以修复的。
如果有人能帮我解决这个问题,那就太好了。
【问题讨论】:
-
根据我的经验,SwiftUI 还没有为现实世界做好准备,并且在处理比显示表格视图更困难的任务时会立即动摇。我会尝试使用 Cocoa(或 UIKit)来实现它。
-
嘿,你能解决这个问题吗?我也有同样的情况。 *.com/questions/68501790/…
-
@arata 不,很遗憾没有。仍在寻找一些好的解决方案。
标签: swift macos csv swiftui metalkit