问题标签 [geometryreader]

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

swiftui - GeometryReader 和 ZStack 到产品截图

我的目标:使用几何阅读器和屏幕截图功能(已经编写)来抓取位于关闭按钮后面的图像的一小部分。

设置:我有一个 ZStack,上面有Image一个较小的按钮(它是本示例的系统映像)。目前,我将关闭按钮与背景图像的顶部对齐,乍一看一切都很好。

但是,当点击关闭按钮时,我需要抓取关闭按钮本身的屏幕截图(匹配框架和大小)。

当我对齐时一切正常,但现在我已经设置ZStack,我的屏幕截图仍然出现在图像的中心。.centeralignment: .top

当点击它时,如何移动GeometryReader包含关闭按钮的屏幕截图以允许屏幕截图成为关闭按钮(以及它背后的一些额外背景)?

我的代码:

截图:

模拟器画面

期望的结果(但在顶部ZStack):

期望的结果

当前结果(在以 为中心的背景图像中间截取屏幕截图ZStack):

当前结果

0 投票
2 回答
301 浏览

swift - 视图之间的 GeometryReader 转换最初会导致 onAppear 触发器

我一直在 SwiftUI 1.0 中开发一个项目,因为它需要支持 iOS 13.0 设备(所以不可fullScreenCover用)。我要求我的应用程序在我的视图之间有干净的过渡动画,所以我在GeometryReader整个应用程序中广泛使用,如下所示:

记录

现在我已经完成了 80% 的 UI,我正在尝试集成数据获取部分。所以,我所做的是onAppear在我的视图上调用我的方法中的数据获取方法。这是我的代码:

但我现在面临的问题是它们是同时被触发的。可以看到控制台打印如下:

仅当它们出现在设备的视图框架中时,我将如何将数据提取到相应的视图?

0 投票
1 回答
94 浏览

swiftui - ScrollView 与 Geometry Reader 结合使用时无法正确滚动(反弹)

我已经在这里查看了答案(ScrollView Don't Scroll with Geometry Reader as Child),我猜这很相似,但我无法弄清楚。

我的目标是显示相同大小(二次)的图像。

这是我的观点:

不幸的是,它没有正确滚动(反弹)并且总是回到顶部。你有什么想法吗?

谢谢!

0 投票
0 回答
641 浏览

ios - 使用 SwiftUI 开发 iOS 13 和 14

我有一个可以在 iOS 13 上正确运行的应用程序版本,但由于 iOS 14 Apple 似乎改变了 GeometryReader 的工作方式(请参阅:iOS 14 has Changed (or broken?) SwiftUI GeometryReader)。

问题是现在有两套关于 GeometryReader 的不同设置应该适用于 iOS 13 和从 iOS 14 开始的任何新版本。

A. 由于这是一个应用程序范围的问题,是否可以上传仅支持 iOS 14 和更新版本的版本,同时保留 iOS 13 的旧版本?我可以单独更新旧版本吗?

B.如果不是,处理需要对几何阅读器设置进行不同调整的两个类的适当方法是什么?, 例如:

0 投票
1 回答
393 浏览

swift - 如何在 SwiftUI 中相对于不同坐标系中的其他视图定位视图

我正在尝试使用 SwiftUI 在我的应用程序中实现拖放功能。

我创建了两个圆圈,它们位于两个不同的HStacks. 它们不共享相同的坐标空间。

带有笔划的圆圈是目标,绿色实心圆圈是要拖动的对象。

我能够使用一个GeometryReaderinside来获得他们的绝对位置.overlay。我用它来检测当对象圆被拖动到目标圆上时它们是否重叠。这行得通。

当它们不重叠时,对象圆将移回其原始位置。当它们确实重叠时,对象圆应该在目标圆的位置卡入到位。这是我似乎有问题的地方。

我正在尝试通过以下方式设置对象圆的新 X 和 Y 位置:对象圆局部位置 - 对象圆全局位置 + 目标圆全局位置。

我假设这会将我带到目标圆的坐标空间。但不知何故,它不起作用。

到目前为止,我一直无法找到一种可靠且简单的方法来在 SwiftUI 中转换坐标空间。使用覆盖内部的解决方法GeometryReader至少可以为我提供正确的全局位置。但是我还没有找到一种方法来使用这些位置将视图也放置在.global坐标空间中。

如果有人知道为什么我对坐标空间的计算是错误的,或者甚至知道一种更容易地相互转换和定位视图的方法,我将不胜感激。

这是我的 SwiftUI 单视图 iOS 应用程序代码:

0 投票
1 回答
466 浏览

layout - SwiftUI:ScrollView 中 GeometryReader 中视图的高度和间距

上面的代码结果如下:

在此处输入图像描述

当我们添加 aGeometryReader时,视图会失去它们的大小和间距(.position修饰符只是为了使 GeometryReader 中的文本视图居中):

在此处输入图像描述

任何人都可以分享一些帮助/建议,为什么这是这种行为以及我可能想要研究的内容,以便在我在这里尝试做GeometryReader的 a 中使用居中对齐的视图?ScrollView

向 中添加.frame(minHeight: 40)修饰符ForEach是强制视图占用文本所需空间的一种方法,但这不是一个非常好的或可扩展的解决方案。

谢谢!

0 投票
1 回答
121 浏览

swiftui - 如何使用 GeometryReader 在 LazyVGrid 中拖动视图?

我想拖动网格中的矩形并更改它们的颜色。这段代码几乎可以工作,但这并不总是正确的响应矩形:它的行为相当随机。有什么提示吗?

0 投票
1 回答
280 浏览

swift - GeometryReader 似乎改变了使用其大小数据的视图布局。我怎样才能避免这种情况?

我希望我的图标图像是总屏幕可用性宽度的 1/3。我的代码如下:

当我这样做时,图标会出现在屏幕的左上角,它不会像我想象的那样留在中心。例如,这可以正常工作,但不是基于屏幕大小的动态

0 投票
0 回答
134 浏览

ios - SwiftUI - GeometryReader 覆盖自定义转换

我想在 a 包围的一组视图上应用自定义转换GeometryReader,如下所示:

(✔) 自定义过渡作品:

(✗) 自定义转换被忽略,默认为.opacity

在上面的第一个代码块中的工作上的自定义转换RoundedRectangles可以在其中声明GeometryReader,但我不能像这样构造它,因为我需要RoundedRectangles' 当前定位数据 - 我必须从geometryvar 中获取 - 以作为自定义转换的输入。(为简洁起见,上述代码中省略了这部分,将其视为类似)所以我需要在第二个示例中.myCustomTransition(param: aRequiredValueFromTheGeometryProxy)的上述类似内容中声明转换。GeometryReader

我想不出为什么第二个示例中的转换不能按预期工作的任何原因。我绝不是 SwiftUI 方面的专家,所以我很确定我在这里弄错了。

任何关于为什么会发生这种情况以及任何可能的解决方法的想法将不胜感激!

PS 不出所料,.transition(.identity)在附件上添加一个GeometryReader不起作用。

PPS 我没有包括我的自定义转换实现,因为它似乎对问题无关紧要。(即当我用 替换转换值时.slide,这也不起作用)

0 投票
2 回答
2096 浏览

ios - SwiftUI:从滚动视图的底部对齐构建视图

有没有办法在带有底部对齐的滚动视图内的 SwiftUI 中构建 UI 元素?

我的用例:我有一个屏幕

  1. 间隔(分配以下元素后剩下的内容
  2. 徽标视图
  3. 间隔() - 30
  4. 一些文本 - 4/5 行
  5. Spacer() - 50(这将根据 GR 尺寸高度计算)
  6. 带有两个按钮的 HStack - 这应该固定到视图/滚动视图的底部

我想知道如何将 HStack 视图固定到 ScrollView 底部

我已经复制了我的设置并在 Swift 操场上重现了我的问题,就像这样

在此处输入图像描述

我了解在 SwiftUI 视图中引入 scrollView 时,Spacer 长度更改为零,想知道实现此目的的最佳方法是什么