问题标签 [scrollviewreader]

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 回答
267 浏览

swiftui - swiftui ScrollViewReader scrollTo 不正确工作

我正在用 swiftui 开发一个应用程序。缩放后,当我说使用 ScrollViewReader 滚动到角落时,它会离开屏幕。我的代码如下。尝试几次后失败。它不是每次都这样做。

我的主屏幕。

在此处输入图像描述

滚动到之后

在此处输入图像描述

0 投票
0 回答
45 浏览

list - 异步加载后SwiftUI滚动到项目

我从网络.onAppear 异步加载项目,之后我的 ViewModel 强制重绘 swiftUI 视图。之后我需要滚动列表到特定项目。我这样做了.onRecieve,问题是视图重绘和滚动几乎同时执行,但据我所知,滚动确实先行,所以我需要添加丑陋的黑客延迟,而不是它工作正常。问题是有另一种方法如何在视图刷新后推迟滚动。

}

查看模型代码,它是真实的,但对于这个主题有点简化

0 投票
0 回答
28 浏览

swift - ScrollViewReader 无法滚动到 2D ScrollView 中的正确位置

这是一个简单的 SwiftUI 代码,它构建了一个放在 2D ScrollView 中的大网格。单击每个项目将强制 ScrollView 滚动到 id 比单击项目多 50 的另一个项目。ScrollView 确实滚动了,但它从未滚动到正确的那个。我在 macOS 和 iOS 上尝试过,但都没有成功。我还尝试使用 VStack 和 HStack 代替 LazyVGrid,但仍然没有用。实现这一目标的正确方法是什么?

0 投票
0 回答
38 浏览

ios - 无法设置 SwiftUI ScrollViewReader 滚动动画速度

在具有 iOS15 的 SwiftUI 流的 SwiftUI 应用程序中,我试图减慢 ScrollViewReader 滚动速度的动画。很明显,在下面的示例中,滚动不需要 100 秒。虽然这个例子中的动画看起来不错,但在真正的应用程序中,我以编程方式调用 scrollTo ,它几乎是立即的,而且看起来很生涩。我错过了什么吗?

这是一个例子:

任何指导将不胜感激。Xcode 13.2.1,iOS 15

0 投票
2 回答
65 浏览

swift - SwiftUI、Core Data、ScrollViewReader - [错误] 前置条件失败:无效的图形更新(从多个线程访问?)

我正在尝试在 SwiftUI 中列出核心数据项,其中添加新项也会触发滚动到最后一项。

这是我的代码。它基于 Xcode 中的示例 Core Data 应用程序。一个实体:具有一个属性的项目:时间戳。

它可以工作,但是我在 Xcode 中遇到了这样的错误:

2022-02-06 16:28:47.280984+0700 滚动 [901:2894134] [错误] 前置条件失败:无效图更新(从多个线程访问?)

如何解决这个问题?我的猜测是它与并发有关。创建新项目时,它会获得新的 ID。项目更改的数量。Core Data 保存数据。UI 滚动动画。但是也许当触发滚动时,swift仍然不确定列表中的最后一项?

所以,我尝试过的事情:

如果你取消注释

以及右括号 - 当我一次添加一个项目时,我没有收到错误消息。但是,如果我点击 + 几次,我会再次遇到错误。

另一个令人惊讶的事情是,如果我将ScrollView更改为List,我根本不会遇到错误。即使没有DispatchQueue.main.asyncAfter(deadline: .now() + 0.5) {

0 投票
0 回答
49 浏览

swiftui - 在 SwiftUI 中的 ScrollView 内滚动

在一个巨大的 ScrollView 中,我想放置 Circles,然后滚动到它们,以便在滚动时它们一个接一个地出现在屏幕中间。

我可以使用 .position、.offset 或 .padding 来定位 Circles。我已将它们(300,300)放置在彼此远离的位置,因此当视图加载时它们都不会出现在屏幕上。

当我滚动到使用 .position 或 .offset 定位的位置时,ScrollView 会滚动到左上角。.offset 以插入方式滚动,.position 一直滚动。当我滚动到带有 .padding 的位置时,它没有居中。

我在这里做错了什么?为什么我的三个尝试都不会滚动以使有问题的圆圈位于 ScrollView 的中间?

快速浏览代码:我有一个 ScrollReader,它封装了一个 ScrollView,它可以双向滚动,大小为 4096x4096。它有一个黄色背景,在绘制时会启动一个函数,该函数每秒滚动到 ID 为“circle1”、“circle2”或“circle3”的视图。然后沿着带有这些标签的三个圆圈,最后是左上角的标签,表示 ID 的颜色编号。

0 投票
0 回答
8 浏览

swiftui - ScrollViewReader 在二维 ScrollView 上中断

我有一个 2d ScrollView(垂直/水平)包装在 ScrollViewReader 中,并由两个 ForEachs 填充......直接来自书中。

现在按钮不会滚动到指定的项目,但奇怪的是总是滚动到行的两倍,即 10_10 滚动到 20_10,20_20 滚动到 40_20,40_40 滚动出界?

我错过了什么?是 macOS 12.2beta 的问题吗?

0 投票
0 回答
29 浏览

swiftui - SwiftUI - 动画不适用于父滚动视图中的子视图

我在父垂直滚动视图中有水平菜单滚动视图。当我选择菜单时,它会刷新它会刷新 listView。但是要修复父 scrollView 内容大小,我需要通过将 menuItem 选择的 id 分配给父 scrollView 来刷新整个视图(scrollView)。

一切都按预期工作,但由于我已将 menuItem id 分配给父 scrollView 以修复内容大小/高度问题,滚动选定菜单的动画不起作用。

有什么办法可以实现这个动画吗?