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

swiftui - 列表内的 SWIftUI anchorPreference

anchorPreferences用来设置heightofGeometryReader以适应height其内容。我遇到的问题是,在上下滚动List几次后,应用程序冻结,设计变得混乱,我在控制台中收到以下消息:

有什么想法可以解决这个问题吗?

重要提示:我尽可能地简化了我的设计。

在此处输入图像描述

这是代码:

0 投票
1 回答
275 浏览

swiftui - SwiftUI:如何在 GeometryReader 中获取文本的长度(以磅为单位)

我正在尝试做一个像这样的简单条形图。每个条都应该有一个值为 bar 的标签。如果它是一个大条,标签应该在顶部但在里面,如果它很小,它应该在外面。标签的字体应该适应用户的喜好。

插图:iPhone 示例条形图

到目前为止,我已经为一个条形图提供了此代码,图中的 7 个条形图只是一个具有七个不同数据点的 HStack()。

我的问题是:如何计算标签的长度(以像素/点为单位),以便可以使用var labelPositionY将其移动到正确的位置?现在我已经迭代了一种字体大小设置,但我希望它在所有条件下都是完美的......

PS:theValue.fixedLength1 是一个计算属性,它返回一个格式化的字符串


我的解决方案

所以......在意识到问题已经在另一篇文章中得到回答后,我想分享我的“最终”解决方案:

0 投票
0 回答
125 浏览

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

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

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

在此处输入图像描述

0 投票
0 回答
100 浏览

swift - 如何在 SwiftUI 中访问另一个 CoordinateSpace 的 safeAreaInsets

我正在尝试编写一个视图扩展,ViewModifier它允许我将任何视图定位在CoordinateSpace另一个视图中。到目前为止,我的代码确实有效,但如果 CoordinateSpaces 之一具有安全区域,它会出现对齐问题。我可以通过添加.edgesIgnoringSafeArea(.all)到目标来修复它,CoordinateSpace但我想使用这个扩展而不必担心其他坐标系统的安全区域。

澄清我的代码:

在我的代码中,第一个圆圈在 a 内HStackGeometryReader并且设置了一个CoordinateSpace被调用的"otherSpace"。另一个 HStack 中的圆圈根据 中的位置设置其位置"otherSpace"。第一个HStack并且GeometryReader在顶部,并且有edgeInset20 个顶部。第二个没有。查看GeometryProxy(中ViewModifier)给我的值,我找不到一种方法来确定是否有一种方法来计算边缘插入。

到目前为止,这是我的代码:

更新图像。

第一张图片显示了.edgesIgnoringSafeArea(.all)在目标圆上使用时的结果。无论目标圆(CoordinateSpace)是否有安全区域,我都想得到这个结果。但是当我删除时,.edgesIgnoringSafeArea(.all)我得到了第二张图像,因为我的扩展不知道是否有安全区域,并且总是计算好像没有安全区域。

在此处输入图像描述 在此处输入图像描述

0 投票
1 回答
1653 浏览

ios - SwiftUI HStack 元素等高

我希望两个按钮的高度相同,类似于Equal HeightUIKit 中的约束。

  • 不想指定框架,让 SwiftUI 处理它,但 HStack 中的元素应该是相同的高度。
  • 按钮应具有相同的宽度和高度,并适应较长的文本并增加其框架大小
  • 两个按钮都应该显示它们的完整文本(不应该使用缩放/适合的字体)

示例代码

0 投票
0 回答
182 浏览

ios - SwiftUI:在 NavigationView 中嵌入父视图时不调用 PreferenceKey

DynamicScalingView是一个子视图,有两个按钮,设计为具有相等的宽度和高度,使用preferencekey

问题:DynamicScalingView嵌入 NavigationView 时,它不再适应intrinsic并增加其帧大小。当前没有导航的实现工作正常,但想了解如何在嵌入时解决此问题NavigationView

  • 在示例视图中取消注释 NavigationView 以重现问题
  • DynamicScalingView应该适应动态字体大小并增加其框架大小,保持按钮之间的宽度和高度相同。

XCode 12.2 和 iOS 14.2

0 投票
1 回答
186 浏览

ios - SwiftUI:如何在不使用几何阅读器的情况下根据框架的大小计算视图的大小?

下面的代码效果很好,但是几何读取导致我上游出现问题,所以我希望有相同的逻辑来基于可用空间构建视图的宽度,但不使用几何读取器。可能吗?

0 投票
1 回答
202 浏览

swift - 根据 GeometryReader 结果运行条件代码的视图扩展

我创建了一个 View 扩展来读取它的偏移量(灵感来自https://fivestars.blog/swiftui/swiftui-share-layout-information.html):

我也在使用 Federico 的 readSize 函数:

两者一起帮助我确定滚动视图中的子视图是否在屏幕上/在屏幕外:

这是检查可见性的 isOffscreen 函数:

一切正常。但是,我想将代码进一步优化为一个单独的扩展,该扩展根据输入的偏移量和 size.height 检查可见性,并且还接收关于可见时做什么的参数,即移动 readOffset 的闭包成为逻辑与扩展代码共存。

我不知道这是否可行,但认为值得一问。

0 投票
1 回答
1002 浏览

ios - 保存 ScrollViews 位置并稍后滚动回它(偏移到位置)

我找到了一种使用 a和 a保存 ScrollViews偏移量的方法。GeometryReaderPreferenceKey

SwiftUI | 从 ScrollView 获取当前滚动位置

并且ScrollViewReader有一种scrollTo滚动到设定位置的方法。

滚动到

问题是,第一个方法保存了一个偏移量,而第二种方法需要一个位置(或一个 id,这与我的位置类似)。如何将偏移量转换为位置/id,或者是否有任何其他方式来保存和加载 ScrollViews 位置?

这是我现在拥有的代码,但它没有按我想要的方式滚动:

onAppear我想设置scrollTarget为保存位置的视图中。但它会滚动到任何地方,但不会滚动到我想要的位置。

我想过将偏移量除以一个项目的大小,但这真的是要走的路吗?听起来不太好。

0 投票
0 回答
70 浏览

swift - 如何使用 .firstTextBaseline 对齐与包含 GeometryReader 的视图

我有两个视图HStack- 左边是一个简单的Text视图。

对于正确的视图,我正在尝试使用 GeometryReader。使用几何阅读器时无法对齐文本的基线,但不使用时可以。

这是一些代码:

结果如下:

在此处输入图像描述

如您所见,当右手视图是 GeometryReader 时基线对齐不起作用,但当右手视图是简单按钮时它确实起作用。

有谁知道我怎样才能让基线对齐?

我使用 GeometryReader 是因为我的右视图最终会更加复杂 - 我正在将我面临的问题减少到尽可能小的重现。

谢谢!