问题标签 [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 投票
2 回答
946 浏览

swiftui - LazyVStack 滚动停止动画

此代码列出了 100 行刷新图标动画。当使用 aLazyVStack而不是 aVStack时,在向下滚动到此列表的底部后,所有动画都会停止,包括在您向后滚动时位于列表顶部的动画。没有这样的问题VStack。关于为什么会发生这种情况的任何想法以及是否有解决方法?使用 Xcode 12.0.1、iOS 14、Swift 5

0 投票
0 回答
125 浏览

swiftui - ScrollView 中的 GeometryReader - 滚动不再起作用

我试图通过将GeometryReader 放置在 ScrollView 内来获得滚动偏移,但它禁用了滚动(LazyVStack 的区域在滚动尝试时反弹)。似乎 GeometryReader 的大小与 LazyVStack 完全相同,而 LazyVStack 的高度为 .infinite ,因此滚动不起作用。

我尝试将GeometryReader 放置在 ScrollView 周围并且滚动效果很好,但我没有收到来自 onPreferenceChange 的任何数据。是否有任何解决方法可以使它们(滚动和 onPreferenceChange 报告)都起作用?

在此处输入图像描述

0 投票
1 回答
52 浏览

text - 尝试使用多行文本设置可滚动视图,但是当应用程序运行时,滚动时运行速度非常慢

我正在尝试设置一个说明视图,该视图将显示通过文本运行我的应用程序的说明(对于那些不太了解它的工作原理并需要逐步说明的人)。

我写了下面的代码,但是当我运行它时,当我打开这个特定的视图时它运行得非常慢,并且滚动非常非常慢,直到它什么也没做,就像没有崩溃的崩溃一样。

我的代码:

我拥有的代码在“描述文本”中的代码比上面的要多得多,并且每个新类别或标题都由一个带有一组 2 个文本的新 LazyVStack 块组成,如上所述。整个视图应该由 8-10 个 LazyVStack 块组成。

下面是我正在尝试做的图表:

仅带有文本的可滚动视图

基本上,我只是想创建一个可滚动的视图,它只包含带有标题的文本和下面的标题描述。最多有 10 个标题和描述 - 所有文本。

任何想法,我做错了什么以及如何解决这个问题?

0 投票
0 回答
120 浏览

list - SwiftUI:使用 LazyVStack 而不是列表时,如何从待办事项列表中删除项目/检查项目?

在此处输入图像描述

首先让我说我对编程很陌生,我几乎没有经验。我需要为一个学校项目做一个待办事项清单,我真的需要帮助。

我正在尝试制作一个布局更美观的待办事项列表,因此我没有将其制作为列表视图,而是将其制作为嵌入到 ScrollView 中的 LazyVStack。现在我试图想出一种方法来:

一个。删除不同的待办事项;我曾尝试使用 EditButton() 来执行此操作,但因为它不是我使用的列表视图,所以我不能使用简单的:.onDelete 修饰符。

湾。检查待办事项列表中的项目。基本上与上述相同,只是在为每个待办事项按下小检查按钮时。

我尝试使用布尔状态变量:@State private varshowingGroupBox:Bool = true,然后在按下按钮时切换它,但由于某种原因,这不起作用。

我还尝试了 deleteTodo 函数(参见第二个代码块),但无济于事。

因此,如果有人可以帮助我解决以下问题,我将不胜感激:

一个。在导航栏中按下 EditButton() 时,有一种方法可以删除待办事项。

湾。当按下每个待办事项中的小复选框时,待办事项将被删除/不再与 CoreData 一起存储。

这是我的待办事项清单的代码:

这是我的按钮代码。

0 投票
0 回答
157 浏览

swiftui - 嵌套的 ForEach + ScrollView Header 导致故障

在 Scrollview 内部,我使用带有固定标题的 LazyVStack,并根据滚动位置操纵该标题的比例。

在 LazyVStack 中,我有一个 ForEach 迭代一些项目列表。但是,如果我使用嵌套的 ForEach 循环(例如,按月份将项目分组在一起),则滚动视图会变得非常故障/跳跃。

最小可重现代码:

删除内部嵌套的 ForEach 循环可以解决问题。这里会发生什么?我认为在每次滚动更新时更新标题比例会导致视图更新过多并导致故障,但这并不能解释为什么它适用于一个 ForEach 循环。

0 投票
0 回答
213 浏览

swiftui - 使用 LazyVStack 在 Mac 应用程序中重新排序 SwiftUI 列表

这是一个简单的macOS演示应用程序,它使用 SwiftUIListLazyVStack. 我更喜欢使用 aLazyVStack因为它更容易自定义样式。但似乎缺少一些内置功能,例如重新排序列表项(如下所示)

在此处输入图像描述

在示例中,项目的重新排序工作正常List。但在LazyVStack.

有没有办法让.onMove功能在LazyVStack实例中工作?还是我必须用 来实现一整套定制的.onDrag东西NSItemProvider

0 投票
1 回答
337 浏览

swift - 用户滚动并在旋转后引用它后,如何获取 List 或 LazyVStack 中最后一个可见行的当前索引(id)?

我的 UI 中有一个 LazyVStack,设备旋转后显示的行与旋转前不同。甚至不靠近那些行。

在 SwiftUI 之前,我通过获取 viewWillTransition 中的最后一个可见行,然后在orientationDidChangeNotification 之后滚动到它来处理这个问题。

我在 SwiftUI 中没有找到任何方法来检测设备何时发生变化,以便我可以获得最后一行索引并在旋转后滚动到它。

是否有任何等效的 viewWillTransition 或我可以采用的任何策略来获得该功能?

0 投票
1 回答
170 浏览

swift - SwiftUI - 从嵌套子视图更改模型

我有一个 LazyVStack 展示单元格。我的拥有 LazyVStack 的主视图有一个 viewModel。

Stack 提供了一个 CustomViews 列表。

每个自定义视图都由另外两个子视图 CustomView1 和 CustomView2 组成。CustomView2 有一个按钮,我想在其中 onTap 翻转单元格。

但是,那时我的自定义视图有这些项目(结构)的新副本。指向模型以实现的最佳方法是什么:

  • 不知何故,多个@Binding 变量是一个选项?
  • 制作 ViewModel 共享单例以便于访问?
  • 更好的选择?
0 投票
0 回答
435 浏览

swiftui - ScrollView + LazyStacks 口吃

在使用和/时,我遇到了许多类似的问题,其中惰性堆栈的内容在.ScrollViewLazyVStackLazyHStackScrollView

首先,我认为这可能是由于在惰性堆栈上使用复杂的视图会导致 SwiftUI 中的布局问题,但我设法提出了一个使用非常简单的视图层次结构的 MWE,问题仍然存在。

当快速向左滚动并在 的前沿弹跳时,这会导致卡顿ScrollView

减小第一个视图的宽度会使口吃消失

对于这个 MWE,口吃似乎只发生在设备上(可能是因为我在模拟器中滚动速度不够快)。但是,在具有更复杂视图的模拟器中,我也遇到了同样的问题。

如果这是 SwiftUI 中的错误,有什么想法吗?

在带有 Xcode 13 beta 1 和 iOS 15 的 iPhone Xs Max 上进行了测试。

0 投票
0 回答
34 浏览

ios - 在 SwiftUI 中检测组件外部的屏幕交互

由于本教程,我正在使用带有可滑动操作的 LazyVStack 构建自己的自定义列表:https ://prafullkumar77.medium.com/swiftui-how-to-make-custom-swipe-able-cell-727a27abdddd

只要您通读并理解它,而不是仅仅复制和粘贴,它还不错。但是,就像所有当前可用的开源框架一样,它缺少一个核心功能,我不知道人们是否只是忘记了,或者这是不可能的,所以我想我会问,因为我不能想办法。

在 UIKit 的原生列表中,如果您将列表项拖到半打开状态并且其中一个列表项操作可见,但随后通过拖动或点击在列表中的任何其他位置进行交互,它将关闭当前可见的列表项操作. 解雇行动是容易的部分,它告诉它解雇这让我感到困惑。

我知道苹果可以做很多不公开的事情,但这似乎在理论上应该是可能的。我想弄清楚这一点并将其公开,因为这些可滑动操作是苹果在决定转向这些懒惰堆栈之前似乎忘记添加的关键功能。