问题标签 [swiftui-scrollview]

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 投票
0 回答
157 浏览

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

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

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

最小可重现代码:

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

0 投票
1 回答
103 浏览

ios - 尽管单击下面的按钮,但按钮单击触发

我有以下代码。顶部的两个大按钮和一个带有许多按钮的 ScrollView:

但是,当我单击 ScrollView 第一行中的一个按钮时,会触发上面 HStack 中的按钮。例如看下面的照片。我单击“A”(黑点,我无法显示光标)但上面的大按钮被触发(并变为灰色)。我该如何解决?

XCode 版本 12.3

例子

0 投票
1 回答
805 浏览

macos - 在 SwiftUI 中,如何通过动态变化的滚动区域来缩放 scrollView 内的内容?

我正在使用 SwiftUI 开发 MacOS 应用程序。

假设我们有一个固定大小的窗口,它将显示一个可滚动的图像。现在我想创建一个功能,可以让用户缩放图像,并且可以在窗口内滚动和查看缩放的图像。

问题是,一旦我放大图像,滚动区域似乎没有一起扩展,并且滚动区域不够大,无法到达图像的每个角落。

我尝试使用 GeometryReader 设置图像的框架,但得到了相同的结果。

macOS 11.1、Xcode 12.3

谢谢!

0 投票
0 回答
328 浏览

swiftui - 滚动上的 SwiftUI 日历获取当前月份

我试图在滚动日历时获取当前月份。我的目标是拥有当前月份的标题,然后当视图向下滚动到新月份时,标题会更新为相应的月份。我尝试使用 LazyVStack 并在 onAppear 方法中设置当前月份,但使用lazyVStack 从来都不是一致的,并且总是关闭几个月。下面的代码针对 iPad 日历月视图进行了优化。

0 投票
1 回答
63 浏览

swift - 滚动视图下的 SwiftUI 点击

绿色的点击手势不起作用。有人对此有解决方案吗?

0 投票
0 回答
451 浏览

swiftui - 如何使用 TabView 或 ScrollView 进行轮播?

我正在尝试像 Apple 的某些应用程序一样创建一个轮播。具有TabView分页样式,但它不会“窥视”上一个和下一个元素。ScrollView(.horizontal)不卡。我希望在不重写客户视图的情况下混合这两种行为。对于这些观点中的任何一个,这样的事情是否可能:

在此处输入图像描述

这就是我正在尝试的:

在此处输入图像描述

在此处输入图像描述

0 投票
5 回答
5058 浏览

ios - SwiftUI:将 LazyVStack 或 LazyHStack 放入 ScrollView 会导致卡顿(Apple 错误??)

XCode 版本 12.4 (12D4e)

每次我在 ScrollView 中实现 Lazy 堆栈时都会遇到这种情况:

  1. 将 a 添加LazyHStack到水平ScrollView或将 a添加LazyVStack到垂直ScrollView
  2. 添加足够的内容以使滚动视图的内容大小超出其范围

场景 1 - 将滚动视图拉出边界(就好像你在拉动刷新一样)

预期的行为:它的行为与预期的滚动视图保持在您的手指下一样

观察到的行为:口吃和跳跃

场景 2 - 快速滚动到边缘,使其必须反弹

预期行为:它平稳地弹跳

观察到的行为:当它到达边缘时它会停止并抖动,但不会反弹

我的理论 我的理论是,由于使用了惰性堆栈,当视图离开屏幕时,它会从视图层次结构中删除,从而产生口吃。

我想知道是否有其他人遇到过这种情况?这是 SwiftUI 中的错误吗?几个月来,我已经在不同的项目中可靠地复制了这一点,最终不使用我希望可以的 Lazy 堆栈。

示例代码

注意:口吃只发生在滚动视图的顶部

** 2021 年 7 月 10 日更新**

这仍然在 iOS 15 版本 13.0 beta (13A5155e) 中发生。

在下面的视频中,请注意滚动条的行为和我们到达底部时的卡顿:

https://youtu.be/z2pybl5yYqk

** 2021 年 7 月 19 日更新**

我把视图中的所有东西都撕掉并一个一个地构建起来——只要我VStack/HStack/ZStack在一个简单的Text元素周围放置一个,LazyVStack 就会开始卡顿。

如果我添加fixedSize(horizontal: false, vertical: true)Text元素中,它似乎停止了口吃。一旦我添加一个UIViewRepresentable可变高度,它就会再次开始口吃。

似乎在 LazyStack 中,每个孩子都需要某种固定大小或纯粹的 SwiftUI 视图才能工作。

我会继续挖掘。必须...解决...

0 投票
0 回答
334 浏览

ios - 使用 scrollViewReader 时 SwiftUI ScrollView 滚动太远

我正在创建一个应用程序,我在分页视图中呈现数据,每个视图都包含一个垂直滚动列表,由 scrollView 启用。我还使用 scrollViewReader 能够以编程方式滚动到列表中的特定位置。这在大多数情况下都可以,但是当我以编程方式滚动到列表底部(到最后一项)时,它滚动得太远了。

我已经隔离了一个可重复的案例:

如果您在例如 iPhone 12 模拟器上运行此程序,您将确保列表中的最后一项最终位于屏幕中间。如果您手动滚动并释放,列表将“下降”到屏幕底部,这是我希望列表具有的位置,即使我使用 滚动到最后一项.anchor: .center

有没有办法解决这种行为?

编辑:意识到我不够清楚。只要我的视图中有更多可滚动的内容,我就希望锚点为 .center。但是当我到达列表的底部时,我希望 scrollView 足够聪明,知道它不能再滚动了。就像现在一样,如果您手动滚动,它会滚动更多。

0 投票
1 回答
88 浏览

swiftui - Swiftui ScrollViewreader 多个 ScrollTo 在不同的 Foreach

我不能在我的代码中创建很多 .scrollTo() :(我很抱歉我的英语不好)

我的问题出在 value.scrollTo(topID) 我试图在 3 个不同的 foreach 中实现其中的 6 个并且编译器无法编译但是如果我删除它编译的 Foreach 之一的 value.scrollTo(topID)

这是我的代码的一部分(全部在 ScrollView 中,在 Scrollviewreader 中,在 Vstack 中,在 Zstack 中)

这段代码可以正常工作并且可以编译,因为如果我将其中一个 Foreach 的 .scrollTo() 注释掉,它将无法编译。

任何帮助我不知道问题是Foreachs还是.scrollTo()?

0 投票
0 回答
56 浏览

swiftui - SwiftUI:如何为图标水平创建滚动视图

我想为水平视图中的社交媒体图标制作滚动视图,以便缩放和调整大小,使其看起来像这张图片

- 我应该使用滚动视图还是列表视图?也以水平方式

我已经尝试过这段代码,但它没有用,你有什么我可能错过的解决方案吗?