问题标签 [lazyvgrid]

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

swiftui - 将单元格动态添加到 SwiftUI LazyGrid

如何在 SwiftUI 中向某些 LazyVGrid 动态添加单元格(不是列)?以下代码应通过单击按钮添加 1 个单元格。它编译但不起作用。我错过了什么?

0 投票
1 回答
403 浏览

ios - 如何在 SwiftUI 中创建带有方形单元格的 2 列网格

我正在尝试使用网格在 SwiftUI 中复制此 UI。

在此处输入图像描述

我像这样创建了单元格。

像这样的网格。

但在 iPod 等较小的屏幕上,单元格是重叠的。

在此处输入图像描述

在更大的 iPhone 屏幕上,间距仍然不正确。

在此处输入图像描述

我必须进行哪些调整,以便在每个屏幕尺寸中,单元格将显示为正确的正方形并且所有边的间距相等?

0 投票
1 回答
426 浏览

gridview - 如何使 SwiftUI 文本多行文本对齐从顶部和中心开始

在此处输入图像描述

如何使图像和文本对齐方式与 SwiftUI LazyVGrid 中的其他 3 个相同,如下图所示?

我认为问题是如果文本是多行的,如何使文本从顶部开始。在 Android 中我可以使用gravity="top|center" 但在SwiftUI 中我使用.multilineTextAlignment(.center) 但结果与我预期的不同。

在此处输入图像描述

这是我在代码中尝试的内容:

0 投票
2 回答
814 浏览

swift - 如何允许 ForEach 布局项在 SwiftUI 中显示数组中的重复项?

我正在使用多项选择答案测验应用程序。

更新 这里是我的测验应用程序的示例。

这是错误:

线程1:致命错误:每个布局项只能出现一次

波纹管代码崩溃

这是一个测验应用程序,因此可以选择多个选项来选择正确答案。数组项将在每个循环中多次出现。

所以需要每个布局项多次出现。

0 投票
1 回答
486 浏览

macos - 将多个 LazyVGrid 添加到 ScrollView

我有一个应用程序,它按天显示缩略图集合,每一天都是它自己的LazyVGrid,所有的日子都聚集在一个VStack.

最重要的是,看起来LazyVGrid在单个中添加多个ScrollView 几乎可以工作......但没有。

它在滚动时会导致不稳定的行为,这是一个示例:

编辑4:我认为我正在取得进展。这似乎发生在网格的最后一行有空间时,如果所有行都满了,它似乎按预期工作。

编辑 1:在此处更改代码以使用 Identifiable(感谢 Simone),但问题仍然存在

如果您运行此代码并滚动视图,您可能会在某个时候看到ScrollView跳跃。

在使列表更长的较窄窗口中尤其明显

当然,使用单个LazyVGridinside ofScrollView不会出现问题

我尝试过查看视图的数量,结果似乎是随机的,有时它会工作一段时间,有时它会立即重现,但更窄的窗口最终总是会显示问题。

我也尝试删除VStack.

编辑2:这是正在发生的事情的视觉效果:

GIF 显示问题

编辑 3:我也可以在 iOS 上重现该问题。

GIF 在 iOS 上显示问题

编辑 5 :非常丑陋的黑客尝试修复它。

编辑 6:完全工作的代码示例

这个想法是用虚拟的填充剩余的瓷砖,一开始似乎很容易,但有一个问题LazyVGrid完全打破了GeometryReader

我发现了这个 hack 并用它来确定需要多少额外的图块https://fivestars.blog/swiftui/flexible-swiftui.h​​tml

这可能是我曾经做过的最丑陋的黑客攻击之一,我只是在这里发布它,以供那些在这个页面上绊倒的人比我更聪明地实现更好的东西。

0 投票
1 回答
190 浏览

swift - 重新渲染父级时在 SwiftUI 中关闭视图

使用iOS14.4、Swift5.3.2、XCode12.2、

我尝试关闭 SwiftUI 的 GridView(参见下面的代码)。

解除功能是由 的\.presentationMode属性完成的,@Environment 如here所述。

一切正常,直到我引入一个@Binding在解雇的那一刻改变父视图的属性。(见dataStr = titles[idx]下面的代码摘录)。

我读到,\.presentationMode只有在显示子视图期间父视图未更新时,解雇 by 才有效。

但是当用户在这里点击 GridView 的一个元素时,我绝对需要在父视图上引起突变。

如何重写以便更新父视图并且解除子视图仍然有效?

正如@jnpdx 所问,在这里您可以看到父视图。请找到GridView(dataStr: self.$dataStr)里面.sheet()ToolBarItem()......

0 投票
1 回答
1355 浏览

ios - SwiftUI LazyVGrid 动态行高

我想要一个具有相同高度的 LazyVGrid 行扩展/收缩以填充可用的父高度

可能吗?

上面的代码确实在宽度上完美地分隔了框架,但行不会扩大和缩小,它们只会紧贴内容的高度。

预期的

0 投票
1 回答
196 浏览

memory - matchGeometryEffect 对 ScrollView 内存泄漏的影响

我使用 LazyVGrid 来显示文章库。一切正常,我没有内存警告,因为每次视图离开屏幕时,内存使用量都会减少。

我的问题是当我对图像使用matchedGeometryEffect时,以便将动画与新视图同步。

动画效果很好,但是在滚动视图滚动时内存正在增加。就像matchedGeometryEffect正在维护对对象的内存引用,并且不允许释放。

容器

卡片视图

...

新观点

...

一切都很完美,但是如果我取消注释注释行,滚动时内存使用量会增加。

任何想法?比你

0 投票
1 回答
395 浏览

image - SwiftUI LazyVGrid 滞后于图像

当我滚动我的 LazyVGrid 时,应用程序滞后很多。

文章卡查看

我使这个视图 Equtable,但仍然滞后。滚动不是流体。

任何优化滚动的想法。

0 投票
1 回答
466 浏览

swiftui - ScrollView / LazyVGrid 中的 SwiftUI 中的 EditButton()

SwiftUI(Xcode 12.5 beta 3)中的 EditButton() 似乎有各种问题。

在我的代码中,一切正常,直到我用 ScrollView 替换 List 并添加了 LazyVGrid。现在,当用户点击 EditButton 时,不会激活 EditMode。

任何解决方法的想法?拥有 2 列是 UI 的要求,虽然我可以使用列表,但我更喜欢 ScrollView 的外观。我已经尝试了很多东西......将 ForEach 放在一个部分并将 EditButton 放在标题中,用手动按钮替换它......不幸的是它们似乎都不起作用:-(

非常感谢任何想法或任何其他人为解决这个问题所做的任何事情。

尝试 1

在阅读了下面 Asperi 的评论后,我在 ScrollView 中添加了以下(下)以手动创建按钮、触发 EditMode 和删除项目。现在我在行上遇到一个新错误deleteCars:“初始化程序'init(_:)'要求'FetchedResults.Element'(又名'Cars')符合'Sequence'”。

看起来我真的很接近,但仍在挣扎 - 任何人都可以帮助我完成最后的工作吗?非常感谢!