问题标签 [lazyvstack]

For questions regarding programming in ECMAScript (JavaScript/JS) and its various dialects/implementations (excluding ActionScript). Note JavaScript is NOT the same as Java! Please include all relevant tags on your question; e.g., [node.js], [jquery], [json], [reactjs], [angular], [ember.js], [vue.js], [typescript], [svelte], etc.

0 投票
1 回答
82 浏览

ios - 使用两个轴时如何将 ScrollView 内容对齐到顶部?

这是一个简单的例子:

问题是,当使用两个轴 ( [.horizontal, .vertical]) 时,会ScrollView自动将任何内容垂直和水平居中。我在 中有一个大数据表ScrollView,我需要将它与顶部对齐,但我不知道该怎么做。通常带有Vstacks 和Spacers 的东西在这里根本不起作用。

0 投票
2 回答
108 浏览

swiftui - 使用实时数据滚动时,SwiftUI 列表非常慢

我有一个列表和一个数组中的大约 1000 个项目,并且我的项目实时更新(100 次更新/秒)。我的清单表现不佳。

这是我的测试代码(我尝试使用 List 和 LazyVStack):

0 投票
2 回答
141 浏览

arrays - SwiftUI:删除最后一个元素时索引超出范围

我有一个用 LazyVStack 制作的清单,我为清单项目实现了删除功能,但由于某种原因,只有当我尝试删除最后一个元素时,应用程序才会因“索引超出范围”而崩溃

这是我的代码:

0 投票
0 回答
77 浏览

swiftui - SwiftUI 也会导致死循环,为什么呢?

这是我的初始代码

为什么使用 LazyVstack 集合框架会导致死循环?我仍然无法理解这样的问题。如果直接使用Vstack,不会出现死循环。为什么,或者如果你不设置框架,它不会导致无限循环。虽然不设置框架不会对程序产生任何影响,但为什么会这样呢?

0 投票
0 回答
44 浏览

swiftui - SwiftUI LazyVStack 孩子在滚动时消失

我有一个带有自定义视图的简单 LazyVStack。我注意到当它在导航栏下滚动时,视图会过早地消失。除了在不需要时禁用滚动之外,还有什么好的解决方法吗?我附上了这个问题的动画 gif。

在此处输入图像描述

0 投票
2 回答
168 浏览

swift - LazyVStack - 行 onAppear 被提前调用

我有一个LazyVStack,有很多行。代码:

最初在屏幕上只能看到大约 40 行,但onAppear触发了 77 行。这是为什么,为什么在屏幕上真正可见之前调用它?我不明白为什么 SwiftUI 必须“预加载”它们。

有没有办法解决这个问题,或者如果这是有意的,我怎样才能准确地知道最后一个可见项目(接受不同的行高)?

编辑

状态的文档LazyVStack

堆栈是“惰性的”,因为堆栈视图在需要将它们呈现在屏幕上之前不会创建项目。

所以这一定是一个错误,我想?

0 投票
0 回答
84 浏览

ios - SwiftUI 究竟在哪里使用 Lazy Stacks 进行性能优化?

许多在线网站演示使用惰性堆栈加载大量视图,例如ForEach(1...100, id: \.self) { value in用于演示用法。但是在具有复杂视图的生产应用程序中,我真的找不到任何资源来了解在何处以及如何准确地使用 Lazy Stacks。例如,我有一个MasterView包含许多复杂视图的子视图(每个视图包含多个绘制成本高的图表)。我应该像下面那样在顶层使用惰性堆栈,还是子视图(ComplexViews)也应该在它们中使用惰性堆栈?或者子视图应该使用 LazyStacks 并MasterView使用常规的 VStack?从性能(滚动的角度)来看,什么是最优化的。

0 投票
1 回答
139 浏览

ios - LazyVStack 在 SwiftUI 更改时初始化所有视图

我有一个LazyVStack我只想更新一个视图而不是在屏幕上重新加载所有其他视图。对于更复杂的单元,这会对性能造成很大影响。我已经包含了示例代码

正如您所看到的,即使仅更改 1 个单元格,也会为每个单元格调用 init。有没有办法避免这种情况?

0 投票
1 回答
171 浏览

swiftui - 如何检测 LazyVGrid 的项目是否被重新构建?

在我的应用程序中,LazyVGrid多次重新构建其内容。网格中的项目数可能不同或保持不变。每次必须以编程方式将特定项目滚动到视图中。
当第LazyVGrid一个出现时,可以使用onAppear()修饰符将项目滚动到视图中。
有什么方法可以检测LazyVGrid下一次完成重新构建其项目的时刻,以便可以安全地滚动网格?

这是我的代码:

网格

帮助枚举确定要在网格中显示的列数

简化的视图模型

0 投票
0 回答
119 浏览

ios - SwiftUI:向 LazyVStack 添加可刷新?

当我使用列表视图时,我可以轻松添加refreshable修饰符来触发刷新逻辑。我的问题是如何在使用 LazyVStack 时达到同样的效果。

我有以下代码:

在这种情况下,如何获得刷新行为LazyVStack