问题标签 [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 回答
2038 浏览

foreach - ForEach 和 GeometryReader:儿童的可变高度?

我有以下示例:

这是一个卡片列表,如果用户点击它就会展开。这里的问题是.frame(height: self.showDetails ? UIScreen.main.bounds.height : 80, alignment: .center)线。根据 Card-Object 的标题或副标题有多少文本,CardView 必须小于或大于 80。我需要计算高度并使用它而不是固定的 80。

它的外观:

错误的孩子身高

知道如何为 CardView 子级使用具有可变高度的 GeometryReader 吗?

提前致谢!

0 投票
1 回答
980 浏览

ios - 有没有办法使用几何阅读器将我的 SwiftUI 图像的宽度定义为相对于屏幕尺寸?

我正在通过一个示例应用程序来熟悉 Swift 和 SwiftUI,并希望使用自定义视图和 GeometryReader 结合复合布局的想法来确定设备的屏幕大小。

我正在尝试构建的页面是一个可滚动的朋友列表,其中每个行项都是一个按钮,可以选择该按钮来展开列表以查看每个朋友的更多详细信息。我已经构建了按钮和所有包含视图,FriendView以便在我的FriendListView. 我在其中定义了 2 个GeometryReader视图,FriendListView但不知道如何从其中定义每行的大小FriendView以使其保持适当的大小。

对此的需求来自于并非用户稍后可以为他们的朋友设置的每个图像都具有相同的尺寸,因此我希望保持一致。我知道我可以设置一个.frame()修饰符并对宽度进行硬编码,但我希望它与屏幕相关,以便在所有手机屏幕上保持一致。

示例:当一行未展开时,图像应占设备宽度的一半。当它展开时,我希望它占据设备屏幕宽度的四分之一。

截屏

应用程序视图

示例代码

0 投票
1 回答
712 浏览

ios - 检测 GeometryReader SwiftUI 背景上的点击手势

我有一个主视图,并且在该视图中我有一个位于 GeometryReader 中的小弹出菜单,如下所示:

行~~~.background(Color.black.opacity(0.65))~~~ 本质上是在制作背景(即不在弹出视图中的视图的每个部分,有点暗。我想做这样的事情:

但不支持此语法。有什么办法可以做到这一点吗?本质上,我想要它,以便当我在 GeometryReader 之外单击时,我可以切换一个变量(在这种情况下,摆脱弹出视图)。

我尝试在主视图上制作一个 TapGesture 识别器,但由于 GeometryReader 是主视图的一部分,所以当我点击 GeometryReader 弹出视图本身时,它就会消失。

有什么方法可以完成类似于我上面写的代码的事情吗?

谢谢

0 投票
1 回答
3876 浏览

swift - SwiftUI:如何找到图像的高度并使用它来设置框架的大小

所以我一直试图弄清楚如何在 SwiftUI 中找到图像的高度,但没有成功。基本上我有纵向/横向图像,我想以大约 600 pt 高显示纵向图像,而我想显示横向图像,因此使用图像的宽度,所以高度是任意的。话虽如此,我希望它在 GeometryReader 中,因为我使用的偏移量使用它,因此当您向下滚动时,图像不会滚动,但如果您向上滚动,它会滚动。我不相信我可以共享图像,但无论如何,这应该足以成功运行它!

任何帮助将非常感激!

编辑:这里有两张图片供参考 - 对不起,我没有意识到你能做到,尽管我应该想到这一点!

模特情侣手牵手

拉面

0 投票
1 回答
262 浏览

ios - SwiftUI - 过渡动画在 GeoReader 中不起作用?

我有这样的代码:

DeletePost 警报的定义如下:

但是,由于某种原因,过渡动画不起作用。我试图让 DeletePostAlert() 淡入或滑入或其他东西,但到目前为止我尝试过的一切都没有奏效。我也尝试过类似 .animation(.spring()) 的方法,但无济于事。

任何关于我在这里做错的指导将不胜感激。

谢谢

0 投票
1 回答
1810 浏览

xcode - “类型‘()’不能符合‘视图’;只有结构/枚举/类类型可以符合协议”

编辑:问题的解释

此代码产生一个错误,发布者不知道如何解决它。

这是上一篇文章的新编辑。

我在 >Geometry Reader 上收到错误消息。这篇文章包括所有代码。这篇新帖子包括所要求的注册和登录代码。我希望它是可读的格式。我做了一些更正,希望对您有所帮助。代码如下:

0 投票
2 回答
1430 浏览

ios - SwiftUI ScrollView 不会使用 GeometryReader 将内容居中

我在 SwiftUI 中有一个水平 ScrollView,我想“动态”居中。滚动视图中的内容将是一个动态图表,用户可以通过改变年份来改变它的宽度(5、10、15 年图表水平增长)。

无论如何,我有两个问题

  1. 我在水平滚动视图中的内容似乎是左对齐的,任何用填充将其居中的尝试都只是让它偏离居中,并且很难考虑各种屏幕尺寸。

  2. 当我尝试使用 GeometryReader 时,底部的图表“图例”被推到页面底部,Spacer() 无法修复它。

左边是当前代码的样子,右边是我希望它的样子,无论屏幕尺寸/iPhone 型号如何。

在此处输入图像描述

注意这是我使用滚动视图的原因:

0 投票
2 回答
485 浏览

ios - 为什么 GeometryReader 的主体会被评估两次?也是第一次尺寸为零?

我有一个嵌套在 NavigationView 中的 GeometryReader。在 GeometryReader 内部,我使用 GeometryProxy 提供的尺寸和 if 语句。在我的项目中,我偶然发现了一个事实,即 GeometryReader 中的内容被评估了两次,并且第一次提供的尺寸是宽度 0 和高度 0。此外,if case 内的内容的 onAppear() 方法被调用两次,这会导致更多问题。

有人可以解释这种行为,以便我可以改进我的代码吗?

我做了一个最小的例子来展示这个问题:

在横向的 iPad 上,我得到以下控制台输出:

0 投票
1 回答
472 浏览

ios - SwiftUI 中的 GeometryReader 行为

我知道这GeometryReader会占用所有可用空间

但是为什么他们将他们的内容(子视图)锚定到 topLeading 角落?

这是我的代码

结果是这样的

在此处输入图像描述

Text有自己的大小,但为什么它锚定或对齐 topLeading

这是默认行为GeometryReader吗?

我试着让它GeometryReader像这样居中

在此处输入图像描述

Text是中心的正确解决方案GeometryReader吗?

0 投票
2 回答
2028 浏览

swift - 为什么几何阅读器不将其孩子居中?

红色边框是几何区域,黑色边框是文本区域

目前使用 Xcode12 Beta 3

我想用这段代码将文本放在中心

但我得到了这个结果,这意味着文本占用了整个几何尺寸,我认为这是不正确的!因为文本必须适合它们的空间

@twostraws 为布局系统建议的三个角色是

1-父母提供其大小

2-child 选择它的大小

3-parent 定位它的孩子

但我认为这是不对的!

文本占据了整个几何空间