当前位置: 首页 > news >正文

SwiftUI 6.0(iOS 18)监听滚动视图视口中子视图可见性的极简方法

在这里插入图片描述

概览

在 SwiftUI 的应用开发中,我们有时需要监听滚动视图中子视图当前的显示状态:它们现在是被滚动到可见视口(Viewport)?或仍然是隐藏在“未知的黑暗”中呢?

在这里插入图片描述

在 SwiftUI 早期版本中为了得偿所愿,我们需要借助一些“取巧”的手段。不过,从 SwiftUI 6.0(iOS 18)开始情况有了改观,我们有了针对性的解决方案。

在本篇博文中,您将学到如下内容:

  • 概览
  • 1. 监听滚动目标可见性的改变
  • 2. 监听任意视图滚动可见性的改变
  • 3. 更改滚动可见性阙值
  • 总结

相信学完本课后,小伙伴们对于 SwiftUI 滚动视图视口可见性的监听一定会有更加浑然天成的解决之道。

那还等什么呢?让我们马上开始滚动大冒险吧!

Let‘s go!!!😉


1. 监听滚动目标可见性的改变

在以滚动目标(Scroll Target)为驱动导向的滚动视图中,我们有多种方法来监听视口中子视图可见性的“白云苍狗”。


想要了解更多 SwiftUI 滚动目标行为的知识,请小伙伴们移步如下链接观赏精彩的内容:

  • SwiftUI 5.0(iOS 17)滚动视图的滚动目标行为(Target Behavior)解惑和实战

不过,从 SwiftUI 6.0(iOS 18)开始一切都变的更加信手拈来了。在 WWDC 24 中苹果新增了 onScrollTargetVisibilityChange 修改器方法来专注于解决此事:

在这里插入图片描述

使用该修改器,我们可以监听滚动视图视口所有子视图可见性的实时变化情况:

struct ItemsView: View {@State private var visible: [Int] = []var body: some View {ScrollView {LazyVStack(alignment: .leading) {ForEach(1..<100, id: \.self) { item inText("Item \(item)").font(.largeTitle).frame(maxWidth: .infinity).padding().background {Rectangle().foregroundStyle(.blue.gradient)}.

相关文章:

SwiftUI 6.0(iOS 18)监听滚动视图视口中子视图可见性的极简方法

概览 在 SwiftUI 的应用开发中,我们有时需要监听滚动视图中子视图当前的显示状态:它们现在是被滚动到可见视口(Viewport)?或仍然是隐藏在“未知的黑暗”中呢? 在 SwiftUI 早期版本中为了得偿所愿,我们需要借助一些“取巧”的手段。不过,从 SwiftUI 6.0(iOS 18)开始情…...

分享五种mfc140.dll丢失如何修复?五种修复错误的详细解决办法

在Windows操作系统中&#xff0c;DLL&#xff08;动态链接库&#xff09;文件扮演着至关重要的角色&#xff0c;它们为应用程序提供了共享的函数和资源。其中&#xff0c;mfc140.dll是Microsoft Visual C 2015 Redistributable Package的一部分&#xff0c;对于许多使用Microso…...

MATLAB 手动实现投影密度法分割建筑物立面 (73)

专栏文章往期回顾,包含本文章 MATLAB 手动实现投影密度法分割建筑物立面 (73) 一、算法介绍二、算法实现1.代码2.效果总结一、算法介绍 从原始点云中,自动分割提取建筑物立面点云用于立面绘图,可以减少人为操作流程。这里从0开始,手动实现一种基于投影密度法的建筑物立…...

QT的基础数据类型(上)

本文将介绍几个QT中常用的数据类型 QString 是处理字符串的主要类 使用Unicode编码,每个字符是16位的QChar 初始化 QString的初始化方法有以下几种: //字符串常量初始化QString str1 = "Hello, World! str1";//使用构造函数初始化QString str2("Hello, Wo…...

【系统分析师】-综合知识-系统架构

1、设计模式 1&#xff09;观察者模式定义了对象间的一种一对多依赖关系&#xff0c;使得每当一个对象改变状态&#xff0c;则所有依赖于它的对象都会得到通知并被自动更新【消息订阅】。在该模式中&#xff0c;发生改变的对象称为观察目标&#xff0c;被通知的对象称为观察者&…...

华为AR1220配置GRE隧道

1.GRE隧道的配置 GRE隧道的配置过程,包括设置接口IP地址、配置GRE隧道接口和参数、配置静态路由以及测试隧道连通性。GRE隧道作为一种标准协议,支持多协议传输,但不提供加密,并且可能导致CPU资源消耗大和调试复杂等问题。本文采用华为AR1220路由器来示例说明。 配置…...

前端面试题-什么是JavaScript的闭包?有哪些应用场景?

定义: 一个函数能够访问其它函数内部定义的变量 形成的原理: (1)函数创建&#xff1a;在一个函数&#xff08;外部函数&#xff09;中定义另一个函数&#xff08;内部函数&#xff09;。 (2)内部函数访问&#xff1a;内部函数可以访问和修改外部函数中的局部变量。 (3)函数…...

Xilinx XAPP585相关

XAPP585中相关的状态机 第一个状态机&#xff1a;这里主要是在对时钟线延迟的基础上&#xff0c;通过BITSLIP操作&#xff0c;做时钟的对齐&#xff1b; 第二个状态机&#xff1a;这里对c_delay_in所做的操作&#xff0c;主要是对时钟线的延迟进行控制&#xff1b; delay_con…...

Java实现腾讯云人脸识别集成:如何为司机创建人脸模型

文章目录 一、场景介绍二、实现步骤三、代码解析四、总结 在现代的开发过程中&#xff0c;我们经常需要集成各种云服务来增强应用的功能。今天&#xff0c;我想和大家分享一个在Java中集成腾讯云人脸识别的实际案例——为司机创建人脸模型。这个功能通常用于司机管理系统中&…...

微信小程序电话号码授权

前端&#xff1a; 文档&#xff1a;https://developers.weixin.qq.com/miniprogram/dev/framework/open-ability/getPhoneNumber.html uniapp调用的时候&#xff0c;要将bind用替换 <button open-type"getPhoneNumber" getphonenumber"getPhoneNumber"…...

vue3 响应式 API:ref() 和 reactive()

在 Vue 3 中&#xff0c;响应式系统是其核心特性之一&#xff0c;它使得数据的变化能够自动触发视图的更新。 官方文档&#xff1a; 响应式 API&#xff1a;核心 要更好地了解响应式 API&#xff0c;推荐阅读官方指南中的章节&#xff1a; 响应式基础 (with the API preference…...

英智金融行业AI Agent,在金融领域全场景下的业务创新与应用实践

随着全球经济的数字化转型&#xff0c;金融行业也在迅速演变。传统的金融服务已经无法完全满足现代客户对快速、个性化和高效服务的需求。与此同时&#xff0c;市场竞争的加剧、监管环境的变化以及客户期望的提升&#xff0c;促使金融机构不断寻求新的技术来优化运营效率、提升…...

hyper-v安装window10操作系统

Hyper-V是微软的一款虚拟化产品&#xff0c;是微软第一个采用类似Vmware ESXi和Citrix Xen的基于hypervisor的技术。 目标&#xff1a;在window10的物理机上基于hyper-v运行虚拟window10。 准备条件 准备好window10操作系统&#xff0c;iso、wim、esd等都行&#xff0c;我这…...

华三(H3C)UIS3030 Uni-R4900服务器硬件监控指标解读

随着企业信息化建设的不断深入&#xff0c;服务器作为IT架构的核心组成部分&#xff0c;其稳定性和性能直接影响到业务的连续性和用户体验。为了保障服务器的稳定运行&#xff0c;监控易作为一款专业的监控软件&#xff0c;为华三&#xff08;H3C&#xff09;UIS3030和Uni-R490…...

opencv 控制鼠标键盘实现功能setMouseCallback

鼠标事件类型 OpenCV 支持多种鼠标事件类型&#xff0c;常见的包括&#xff1a; cv2.EVENT_LBUTTONDOWN&#xff1a;左键按下 cv2.EVENT_RBUTTONDOWN&#xff1a;右键按下 cv2.EVENT_MBUTTONDOWN&#xff1a;中键按下 cv2.EVENT_LBUTTONUP&#xff1a;左键释放 cv2.EVENT_RBUTT…...

【傅里叶分析】复数基础知识

【傅里叶分析】复数基础知识 复数复数的几何意义与点的对应与向量的对应 复数与极坐标辐角与辐角主值三角函数 参考文献 本文参考了网上的其他文章&#xff0c;已在文末参考文献中列出&#xff1b;如有侵权&#xff0c;请联系我删除。 复变函数是傅里叶分析的基础&#xff0c;而…...

从【人工智能】到【计算机视觉】,【深度学习】引领的未来科技创新与变革

前几天偶然发现了一个超棒的人工智能学习网站&#xff0c;内容通俗易懂&#xff0c;讲解风趣幽默&#xff0c;简直让人欲罢不能。忍不住分享给大家&#xff0c;点击这里立刻跳转&#xff0c;开启你的AI学习之旅吧&#xff01; 前言 – 人工智能教程https://www.captainbed.cn/l…...

基于YOLOv10深度学习的草莓成熟度检测与识别系统【python源码+Pyqt5界面+数据集+训练代码】目标检测、人工智能

《博主简介》 小伙伴们好&#xff0c;我是阿旭。专注于人工智能、AIGC、python、计算机视觉相关分享研究。 ✌更多学习资源&#xff0c;可关注公-仲-hao:【阿旭算法与机器学习】&#xff0c;共同学习交流~ &#x1f44d;感谢小伙伴们点赞、关注&#xff01; 《------往期经典推…...

log4j日志配置%X{TransId}

log4j日志配置文件中的%X{TransId}是怎么动态获取值的 在Log4j中&#xff0c;%X{TransId} 是用来从MDC&#xff08;Mapped Diagnostic Context&#xff09;中获取值的占位符。MDC 是 Log4j 提供的一种机制&#xff0c;用于在同一个线程的不同日志记录中传递上下文信息。通过 M…...

PHP模拟高并发异步请求测试+redis的setnx处理并发和防止死锁处理

/** PHP并发异步请求测试* /test/curlMulti*/public function curlMultiAction(){$urls ["http://localhost:801/api/order/create","http://localhost:801/api/order/create","http://localhost:801/api/order/create","http://localhos…...

LPA分层审核指标是什么?读懂LPA分层审核指标才能评估审核有效性

在工厂的质量管理体系运行中&#xff0c;LPA&#xff08;分层过程审核&#xff09;是确保标准作业落地、问题及时发现和整改的有力工具。但很多企业推行LPA后&#xff0c;仅仅关注有没有做审核&#xff0c;却忽略了审核做得怎么样。结果&#xff0c;审核表填了一大摞&#xff0…...

从手机充电器到新能源汽车:拆解‘电感’在开关电源中的核心戏份(以Buck电路为例)

从手机充电器到新能源汽车&#xff1a;拆解‘电感’在开关电源中的核心戏份&#xff08;以Buck电路为例&#xff09; 当你的手机充电器在半小时内将电量从20%充至80%时&#xff0c;背后隐藏着一个不为人知的能量调度大师——电感。这个看似简单的线圈组件&#xff0c;实则是现…...

从订阅到命令面板:全面理解 SAP Business Application Studio 中的 SAP Fiori 开发入口

在很多 SAP Fiori 项目里,团队把精力都放在 SAPUI5、OData、Fiori elements、注解模型和部署流程上,却常常低估了开发环境本身对效率的影响。等到项目进入多人协作、跨系统联调、权限分配和模板生成阶段,大家才会发现,开发工具并不只是一个写代码的地方,它实际上决定了团队…...

别再被AD值乱跳搞懵了!CS1237电子秤芯片的5个硬件设计避坑点(附电路图)

别再被AD值乱跳搞懵了&#xff01;CS1237电子秤芯片的5个硬件设计避坑点&#xff08;附电路图&#xff09; 电子秤设计中最令人头疼的莫过于AD值不稳定问题。作为一款高精度Σ-Δ ADC芯片&#xff0c;CS1237在电子秤、压力测量等领域应用广泛&#xff0c;但硬件设计中的细微偏差…...

对比ubuntu本地直接调用与通过taotoken调用的开发便捷性

&#x1f680; 告别海外账号与网络限制&#xff01;稳定直连全球优质大模型&#xff0c;限时半价接入中。 &#x1f449; 点击领取海量免费额度 对比 Ubuntu 本地直接调用与通过 Taotoken 调用的开发便捷性 在 Ubuntu 等 Linux 开发环境中集成大模型能力&#xff0c;开发者通常…...

30+输入法词库互转:一站式零门槛解决方案真的存在吗?

30输入法词库互转&#xff1a;一站式零门槛解决方案真的存在吗&#xff1f; 【免费下载链接】imewlconverter ”深蓝词库转换“ 一款开源免费的输入法词库转换程序 项目地址: https://gitcode.com/gh_mirrors/im/imewlconverter 你是否曾因更换输入法而不得不放弃多年积…...

如何用XUnity.AutoTranslator打破游戏语言壁垒:终极实时翻译插件指南

如何用XUnity.AutoTranslator打破游戏语言壁垒&#xff1a;终极实时翻译插件指南 【免费下载链接】XUnity.AutoTranslator 项目地址: https://gitcode.com/gh_mirrors/xu/XUnity.AutoTranslator 还在为看不懂的外语游戏而烦恼吗&#xff1f;XUnity.AutoTranslator正是你…...

AI行业的“隐形赛道”:AI伦理与合规人才缺口到底有多大

一、AI狂飙下的“隐形刚需”&#xff1a;被忽视的伦理与合规赛道当软件测试从业者还在为功能测试、性能测试的技术迭代焦头烂额时&#xff0c;AI行业的另一股暗流正汹涌袭来——伦理与合规人才的缺口&#xff0c;正成为制约AI产业可持续发展的隐形瓶颈。从ChatGPT引发生成式AI热…...

【亲测免费】 罗氏线圈与积分器介绍

罗氏线圈与积分器介绍 【下载地址】罗氏线圈与积分器介绍 罗氏线圈与积分器介绍 项目地址: https://gitcode.com/open-source-toolkit/e480d 资源文件概述 本资源文件详细介绍了罗氏线圈及其相关积分器的原理、制作工艺以及工业应用。内容涵盖了罗氏线圈的基本概念、刚…...

处理智能体的不确定性:重试、回退与人工介入

一个让AI“不任性”的实战手册——该认错时认错&#xff0c;该求助时求助先讲一个让我至今心有余悸的事。 去年做的一个金融Agent&#xff0c;任务是每天自动从十几家券商网站抓取研报&#xff0c;提取关键的投资评级和目标价&#xff0c;然后汇总成一张表发给基金经理。上线跑…...