观察 SwiftUI 中的框架变化

2023-12-02

我有可以拖放到其他视图(比如说类别)之上的视图。为了检测我位于哪个类别视图之上,我将它们的帧存储在帧数组中,这发生在它们不可见覆盖层的 onAppear 中。 (这是基于 Paul Hudson 在this教程)。

这一切都很好,除非这些视图的位置发生变化,例如在设备方向或在 iPad 上调整窗口大小。这当然不会触发 onAppear,因此帧不再匹配。

HStack() {
ForEach(categories) { category in
    ZStack {
        Circle()
        Rectangle()
            .foregroundColor(.clear)
            .overlay(
                GeometryReader { geo in
                    Color.clear
                        .onAppear {
                            categoryFrames[index(for: category)] = geo.frame(in: .global)
                        }
                }
            )
        }
    }
}

因此,任何关于如何在这些情况下更新帧或如何以不同方式观察它们的想法都将受到欢迎。


我遇到了类似的问题,这篇文章激励我寻找解决方案。所以也许这对其他人有用。 只需分配给onChange修改与您所做的相同onAppear并在以下情况下将其点燃geo.size变化。

HStack() {
ForEach(categories) { category in
    ZStack {
        Circle()
        Rectangle()
            .foregroundColor(.clear)
            .overlay(
                GeometryReader { geo in
                    Color.clear
                        .onAppear {
                            categoryFrames[index(for: category)] = geo.frame(in: .global)
                        }
                        .onChange(of: geo.size) { _ in
                            categoryFrames[index(for: category)] = geo.frame(in: .global)
                        }
                }
            )
        }
    }
}
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

观察 SwiftUI 中的框架变化 的相关文章

  • SwiftUI 双向绑定到枚举案例中 ObservableObject 内的值

    我正在尝试观察 a 的变化bool包含在一个值ObservableObject这是一个值enum案件 这是我想要实现的目标的示例 但使用当前的方法我收到错误Use of unresolved identifier type1Value im
  • SwiftUI 无法使用 navigationLink 来回导航

    请注意 在 gif 中 一旦我导航并关闭新视图 我就无法返回 这是 SwiftUI 错误还是导航链接的误用 struct ContentView View var body some View return NavigationView N
  • SwiftUI 文本意外填充底部和顶部

    我需要精确控制文本所占据的区域 我创建了最基本的程序 显示意外的顶部和底部间距被添加到文本中 这些额外的填充从哪里来 如何摆脱它 main struct myApp App init var body some Scene WindowGr
  • 如何使用 NavigationStack 和 SwiftUI 发送额外数据?

    我有三个viewsA B 和 C 用户可以从 A 导航到 B 也可以从 A 导航到 C 用户可以从 B 导航到 C 现在我想区分用户是从 A 到 C 还是从 B 到 C 所以我在寻找如何在 NavigationStack 中传递额外的数据
  • StateObject 作为 init() 中另一个对象的参数

    我试图将 StateObject 用户传递给authenticationHelper 但我不能 因为 IDE 说 在初始化所有存储的属性之前使用 self 即使它是在结构体的开头初始化的 我考虑过将 user 的初始化移至 init 但同样
  • CoreData 和 SwiftUI:环境中的上下文未连接到持久存储协调器

    我正在尝试通过构建一个作业管理应用程序来自学核心数据 我的代码构建良好 应用程序运行正常 直到我尝试将新分配添加到列表中 我收到这个错误Thread 1 EXC BREAKPOINT code 1 subcode 0x1c25719e8 在
  • SwiftUI 转义闭包捕获变异的“self”参数

    我有一个可以通过两种方式打开的视图 一个包含提供给它的数据 另一个包含对 Firestore 文档的文档引用 我创建了两个构造函数 在第一个构造函数中我提供数据 在另一个构造函数中我提供文档参考 然后我使用此引用进行网络调用 但出现错误 E
  • FocusState Textfield 在工具栏 ToolbarItem 中不起作用

    让我解释一下 我有一个带有 SearchBarView 的父视图 我正在传递这样的焦点状态绑定 SearchBarView searchText object searchQuery searching object searching f
  • 在 SwiftUI App 中实现深色模式切换

    我目前正在我的应用程序中研究深色模式 虽然由于我的 SwiftUI 基础 深色模式本身并不困难 但我正在努力选择将 ColorScheme 设置为独立于系统 ColorScheme 的选项 我在苹果人机界面指南中找到了这一点 https i
  • SwiftUI ScrollView 只向一个方向滚动

    尝试使用视图作为列表行样式来创建自定义列表 以摆脱默认情况下列表中难看的分隔线 但是 一旦我将 ZStack 行放入滚动视图中 滚动视图就会在两个方向上滚动 而不仅仅是垂直滚动 这是内容视图 NavigationView ScrollVie
  • SwiftUI 更新主菜单 [已解决] kludgey

    真正的问题 你如何更新mainMenu在 SwiftUI 中 它真的可以工作吗 我在 SwiftUI 中构建了一个基于 MacOS 文档的应用程序 其中包括所有内置的文件菜单命令 即关闭 保存 复制 重命名 等 在保存文档之前 我会验证结构
  • 如何在 SwiftUI 中使用带条件检查的按钮进行导航

    Since 导航按钮不再可用 我如何检查条件导航链接为了导航到另一个视图 NavigationLink destination Dashboard userName self userId password self password is
  • .send() 和 .sink() 似乎不再适用于 Xcode 11 Beta 5 中的 PassthroughSubject

    在下面的代码中 当按下按钮时 Test 应该打印在控制台中 但事实并非如此 该事件不是通过发布者发送的 知道 Xcode 11 Beta 5 中的 PassthroughSubject 发生了什么吗 在 Xcode 11 Beta 4 中效
  • 调用 SwiftUI 中位置 #11、#12 处的额外参数 [重复]

    这个问题在这里已经有答案了 我在 SwiftUI 中的切换开关上不断收到 调用中位置 11 12 处有额外参数 错误 我见过其他人有 调用中的额外参数 错误 但答案似乎没有帮助 另外 我的错误是 位置 11 12 我还没有看到其他人发生这种
  • 在 SwiftUI 中使用分段式选取器在两个页面之间滑动

    我有一个Picker with pickerStyle SegmentedPickerStyle 使其成为分段控件 我想让页面在之间平滑滑动 而不是使用条件语句替换视图 这是我迄今为止所做的 gif 这是到目前为止的代码 由if 而不是在不
  • 使用 Swift(使用 SwiftJWT)和 REST API 连接到 Apple Store Connect - 失败并出现 401

    我正在尝试通过他们的 REST API 连接到 Apple Store Connect 虽然这在几天前有效 但我无法弄清楚为什么它停止工作 现在我无法通过身份验证 即我发出的服务器响应的每个请求都是 401 我是否遗漏了什么 我做什么 生成
  • SwiftUI - 使用“ObservableObject”和@EnvironmentObject 有条件地显示视图

    我想在我的应用程序中有条件地显示不同的视图 如果某个布尔值为 true 则将显示一个视图 如果为 false 将显示不同的视图 该布尔值位于 ObservableObject 类中 并根据将要显示的视图之一进行更改 PracticeStat
  • SwiftUI - 如何编辑列表中的行?

    我想使用 EditButton 切换编辑模式 并将列表行切换到编辑模式 我想在编辑模式下包含一个用于打开模式的新按钮 我什至根本无法获取 EditMode 值来切换行内容 struct ContentView View Environmen
  • SwiftUI 关闭多个模态表

    我在用 sheet isPresented self showModal 在我的根视图中呈现一个模式 在模态中 我正在使用NavigationView引导用户浏览各个页面 对于用户配置文件构建器 在导航堆栈的最后一页中 我正在使用 Envi
  • 如何将一个 SwiftUI View 作为变量传递给另一个 View 结构

    我正在实施一个very自定义 NavigationLink 称为MenuItem并希望在整个项目中重用它 它是一个符合以下条件的结构体View并实施var body some View其中包含一个NavigationLink 我需要以某种方

随机推荐

  • 并排反应传单

    我想并排显示两个图块层 就像并排的传单插件一样 https github com digidem leaflet side by side 但是 我不确定如何通过反应来做到这一点 有没有办法在react中使用上述插件 您对如何实现此功能还有
  • 如何从 angular.dart 组件内部调用 jquery 插件?

    我正在通过尝试制作一个可以访问现有 jquery 插件的组件来学习 angular dart 组件 我正在尝试类似以下的事情 library mylib import dart html querySelector import packa
  • 使用 JavaScript 动态加载 JavaScript

    经过一个多小时的尝试让它工作后 我认为这是因为跨域策略 但我真的认为这会起作用 我也找不到很多相关信息 但是 这是我的问题 我有一个网站叫http mysite com然后我包括一个第三方脚本 我写的 及其地址http supercools
  • SASS 语法未在 css 中生成 &:hover

    我一直在四处寻找 在 stackoverwflow 和其他资源上发现了一些类似的问题 但其中大多数是关于语法错误的 有人可以告诉我这段代码有什么问题以及为什么 SASS 没有在生成的 css 中生成 hover 吗 这是我的 SASS 代码
  • 如何使用鼠标拖动事件在java小程序上绘制矩形并使其保持不变

    我有可以绘制矩形的程序 我有两个问题无法解决 当我绘制矩形后 它不会留下来 我拥有的唯一清除画布的代码 重绘仅在鼠标拖动时调用 为什么当我释放鼠标或移动鼠标时 我的画布会变清晰 第二件事并不是什么大问题 但我无法弄清楚 当我的矩形的高度或宽
  • Google Apps 脚本 V8 运行时使用哪个版本的 ECMAScript?

    当您创建新的 Google Apps 脚本时 它似乎默认支持 v8 运行时 这文档 states Apps 脚本支持两种 JavaScript 运行时 现代的 V8 运行时和由 Mozilla 的 Rhino JavaScript 解释器提
  • 当查询 SSRS 数据集之间没有数据时,向报告添加值

    这基本上与我在这个线程中提出的问题相同 当查询 SSRS 中没有数据时向报告添加值 现在唯一的区别是我想将相同的功能扩展到不同的数据集 想象一下 我有两个数据集 Dataset1 Dataset2 两者具有相同的主键 在本例中 销售代表 类
  • Python 多处理存储数据,直到在每个进程中进一步调用

    我有一个无法在进程之间共享的类型的大对象 它有方法来实例化它并处理它的数据 我当前的做法是首先在主父进程中实例化该对象 然后在发生某些事件时将其传递给子进程 问题是 每当子进程运行时 它们每次都会将对象复制到内存中 这需要一段时间 我想将它
  • 是否可以在React中使用CSS自定义FullCalendar?

    我刚刚从 FullCalendar 开始 我在一个react项目 现在一切都很好 但我想定制实际的日历 我希望它尊重我的客户需求 我的问题 是否可以添加班级名称像这样的 FullCalendar 组件 我尝试过 但无法到达 css 文件中的
  • Retrofit:如何解析组合了数组和对象的JSON数组?

    我正在开发一个 Android 应用程序 它使用 Retrofit OkHttp 连接到 REST API 并使用 JSON 数据 我对 Retrofit 还很陌生 所以我仍在学习它是如何工作的 但到目前为止 一切都非常顺利 然而 我遇到了
  • 不要与 SVN 进行 diff 合并

    我想了解我在功能分支上所做的所有更改的差异 目前我使用 svn log stop on copy awk r NAME print 1 xargs l svn diff c gt code diff 不幸的是 这包括主干合并到我的分支中并使
  • 如何读取android设备上beacon的UDID、Major、Minor?

    我正在尝试为 Android 开发 BLE 应用程序 有什么方法可以检测和读取 Android 设备上信标的 UDID 主要 次要吗 我已阅读 RadiusNetworks android ibeacon service 但我不明白为什么
  • 使用 Unity(而不是温莎城堡)可以实现这一点吗?

    This 博客文章展示了一种使用 Castle Windsor 和 NSubstitute 实现自动模拟的方法 我不知道也不使用 Castle Windsor 但我确实使用 Unity 和 NSubstitute 有没有办法使用 Unity
  • 如何在一个命令行操作中解压文件并重命名文件夹?

    我想下载一个文件 解压它并重命名该文件夹 我可以下载该文件并将其解压 curl https s3 amazonaws com sampletest sample tar gz tar xz 如何在同一命令中重命名文件夹 curl https
  • keras/scikit-learn:使用 fit_generator() 进行交叉验证

    是否可以使用Keras 的 scikit learn API和 一起fit generator 方法 或者使用另一种方式来产生批次进行训练 我正在使用 SciPy 的稀疏矩阵 在输入 Keras 之前必须将其转换为 NumPy 数组 但由于
  • PHP-将unicode转换为字符[重复]

    这个问题在这里已经有答案了 可能的重复 PHP中如何从unicode值中获取字符 PHP 将 unicode 代码点转换为 UTF 8 如何转换 unicode 字符 例如 u05E1通过 PHP 转换为普通字符 The chr函数没有覆盖
  • 汇总新表中的数据

    白天数据放入status table时出现问题如下 一天最多可达4000条 晚上我想将数据以更有条理的方式放入存储表中 status table storage 并将其从 status table 中删除 这个想法是将具有相同状态的所有条目
  • 如何在远程使用 git merge-base ?

    怎样才能用merge base with Git在远程存储库上而不检查它 使用ls remote工作正常 例如用于确定这样的分支 git ls remote heads REPO URL REPO NAME The 文档不包含任何线索 是否
  • 使用 PHP 脚本提供图像与直接加载图像

    我想监控一些外部图像的加载频率 所以我的想法是不要像这样直接给出 uri www site com image1 jpg 我可以创建一个读取图像的 PHP 脚本 因此我构建了一个 PHP 文件 我的 HTML 如下所示 img src ww
  • 观察 SwiftUI 中的框架变化

    我有可以拖放到其他视图 比如说类别 之上的视图 为了检测我位于哪个类别视图之上 我将它们的帧存储在帧数组中 这发生在它们不可见覆盖层的 onAppear 中 这是基于 Paul Hudson 在this教程 这一切都很好 除非这些视图的位置