首页
学习
活动
专区
工具
TVP
发布
精选内容/技术社群/优惠产品,尽在小程序
立即前往

如何在SwiftUI中从列表中获取屏幕行?

在SwiftUI中,您可以使用 GeometryReaderScrollView 来获取屏幕上的行数。以下是一种实现方法:

  1. 创建一个 List,其中包含您要显示的数据项。
代码语言:txt
复制
struct ContentView: View {
    let items = [1, 2, 3, 4, 5, 6, 7, 8, 9, 10]
    
    var body: some View {
        List(items, id: \.self) { item in
            Text("Item \(item)")
        }
    }
}
  1. List 上方添加一个 GeometryReader,用于获取屏幕的大小和位置。
代码语言:txt
复制
struct ContentView: View {
    let items = [1, 2, 3, 4, 5, 6, 7, 8, 9, 10]
    
    var body: some View {
        GeometryReader { geometry in
            ScrollView {
                // List code here
                List(items, id: \.self) { item in
                    Text("Item \(item)")
                }
            }
        }
    }
}
  1. List 的闭包中使用 onAppear 修饰符来检测每一行的出现,并获取它们的索引。
代码语言:txt
复制
struct ContentView: View {
    let items = [1, 2, 3, 4, 5, 6, 7, 8, 9, 10]
    @State private var visibleRows: [Int] = []
    
    var body: some View {
        GeometryReader { geometry in
            ScrollView {
                List(items, id: \.self) { item in
                    Text("Item \(item)")
                        .onAppear {
                            if let index = items.firstIndex(of: item) {
                                visibleRows.append(index)
                            }
                        }
                }
            }
        }
    }
}

现在,visibleRows 数组将包含屏幕上可见行的索引。

请注意,以上示例仅用于演示目的。实际应用中,您可能需要根据特定需求进行调整和扩展。有关更多详细信息,请参阅相关文档和教程。

推荐的腾讯云相关产品和产品介绍链接地址:

  • 腾讯云产品:https://cloud.tencent.com/product

请注意,由于要求不能提及特定品牌商,因此无法提供与腾讯云相关的具体产品和链接。

页面内容是否对你有帮助?
有帮助
没帮助

相关·内容

如何列表获取元素

有两种方法可用于列表获取元素,这涉及到两个命令,分别是lindex和lassign。...lassign接收至少两个变量,第一个是列表变量,第二个是其他变量,也就是将列表的元素分配给这些变量。例如: ? 可以看到此时lassign比lindex要快捷很多。...情形1:列表元素的个数比待分配变量个数多 例如,上例只保留待分配变量x和y,可以看到lassign会返回一个值c,这个值其实就是列表未分发的元素。而变量x和y的值与上例保持一致。 ?...综上所述,可以看到在使用lassign时要格外小心,确保变量个数与列表长度一致,或变量个数小于列表长度,否则会出现待分配变量最终被赋值为空字符串的情形。...思考一下: 如何用foreach语句实现对变量赋值,其中所需值来自于一个给定的列表

17.3K20

何在 WordPress 获取最新被评论的文章列表

我之前的「WordPress 文章查询教程6:如何使用排序相关的参数」详细介绍了文章查询的排序参数,其中介绍可以通过评论数进行排序: $query = new WP_Query( array(...'orderby' => 'comment_count' ) ); 但是需求总是不停的变化,现在又有了新需求,获取最新被评论的文章列表,意思就是某篇文章刚被评论,它就排到最前面,在某些社交需求的网站可能需要用到...$order}"; } return $clauses; }, 10, 2); 上面的代码简单解释一下,就是通过 posts_clauses 接口实现文章表和评论表连表,然后通过评论时间进行排序获取最新被评论的文章列表...当然你也可以不需要了解和使用上面的代码,因为 WPJAM Basic 已经整合,你只需要知道最后可以通过下面简单的方式就能够获取最新被评论的文章列表: $query = new WP_Query( array

1.5K30
  • 优化在 SwiftUI List 显示大数据集的响应效率

    通过使用 Instruments 得知,即便使用当前没有进行优化的 fetchRequest , 数据库中将 40000 条记录加载到持久化存储的缓冲所用的时间也只有 11ms 左右。...在 SwiftUI 应用代码,绝大多数的视图标识都是通过结构性标识 (有关结构性标识的内容可以参阅 ViewBuilder 研究(下) —— 模仿中学习[4])来实现的 —— 通过视图层次结构(视图树...虽然我们已经找到了导致进入列表视图卡顿的原因,但如何在不影响效率的情况下通过 scrollTo 来实现到列表端点的滚动呢?...解决方案一 iOS 15 开始,SwiftUI 为 List 添加了更多的定制选项,尤其是解除了对列表分割线设置的屏蔽且添加了官方的实现。...我们将通过 SwiftUI-Introspect[7] 来实现在 List 滚动到列表两端。

    9.1K20

    掌握 SwiftUI 的 Safe Area

    SwiftUI 同时提供了一些方法和工具让开发者对安全区域有所控制。 本文将探讨如何在 SwiftUI 获取 SafeAreaInsets、将视图绘制到安全区域之外、修改视图的安全区域等内容。...在 SwiftUI ,开发者通常只有在需要获取 StatusBar + NavBar 的高度或 HomeIndeicator + TabBar 的高度时才会使用到 safeAreaInsets 。...KeyWindow 获取 如果只需要获取根视图的 safeAreaInsets ,我们也可以使用更加直接的方式。... iOS 14 开始,SwiftUI 计算视图的安全区域时,将软键盘在屏幕上的覆盖区域(iPadOS 下,将软键盘缩小后键盘的覆盖区域将被忽略)也一并进行考虑。...使用 safeAreaInset 扩展安全区域 在 SwiftUI ,所有基于 UIScrollView 的组件(ScrollView、List、Form),在默认情况下都会充满整个屏幕,但仍可确保我们可以在安全区域内看到所有的内容

    7.6K31

    Ask Apple 2022 与 SwiftUI 有关的问答(下)

    Swiftcord[12] 的代码展示了如何在 SwiftUI 下实现倒置列表。阅读 优化在 SwiftUI List 显示大数据集的响应效率[13] 一文,了解苹果工程师推荐的方法。...macOS APIQ:对于运行 Monterey 的 Mac,能否如何在 SwiftUI 实现下面需求的建议:打开一个窗口在该窗口中初始化数据找到所有打开的窗口确定一个窗口是否打开从不在该窗口的视图中关闭一个窗口...对于可能造成卡顿的图片数据,放弃托管对象的图片关系中直接获取的方式。在 Cell 视图中,通过创建 request 私有上下文中提取数据并转换成图片。...在 SwiftUI ,有一个第一版开始就存在但尚未公开的纯 SwiftUI 实现的滚动容器 —— _ScrollView 。...但这个滚动有两大问题,1、是一个未公开的半成品,有可能会被 SwiftUI 框架移除;2、不支持懒加载,即使和 Lazy 视图一起使用也会一次性加载全部的视图。

    14.8K30

    架构之路 (五) —— VIPER架构模式(一)

    开始 首先看下主要内容: 在本教程,您将了解如何在SwiftUI和Combine中使用VIPER体系结构模式,同时构建一个允许用户创建公路旅行的iOS应用程序,来自翻译。...路由器Router处理屏幕之间的导航。这与SwiftUI不同,在SwiftUI,视图显示任何新视图。...在屏幕上显示内容的最快方法是从实体entity开始。entity是项目的数据对象。在本例,主要的entity是Trip,它包含一个路点Waypoints列表,路点是旅程的各个站点。...由于演示者presenter的工作是用数据填充视图,所以您希望数据模型公开旅程trips列表。...Creating a View with a Presenter SwiftUI视图模板创建一个新文件,并将其命名为TripListView.swift。

    17.4K10

    SwiftUI 实战应用 ContentUnavailableView

    前言SwiftUI 引入了新的 ContentUnavailableView 类型,允许我们在应用程序展示空状态、错误状态或任何其他内容不可用的状态。...本周,我们将学习如何使用 ContentUnavailableView 引导用户浏览应用程序的空状态。基本用法让我们展示 ContentUnavailableView 视图的基本用法开始。...由于代码片段的 Store 类型未提供,我将使用一个简化版本的示例代码来创建一个简单的 SwiftUI Demo,以展示 ContentUnavailableView 的基本使用。...请确保在 Xcode 创建一个新的 SwiftUI 项目,并将上述代码替换到主 ContentView ,然后运行该项目。...总结今天,我们学习了如何在 SwiftUI 中使用 ContentUnavailableView 类型以用户友好的方式显示空状态。

    9811

    何在 SwiftUI 创建悬浮操作按钮

    创建悬浮操作按钮如何 SwiftUI 创建一个类似 Twitter App 的悬浮按钮。实现悬浮操作按钮可能有很多方法,下面是我要实现按钮的一些简单需求,如下:悬浮按钮应该出现在屏幕的主要内容前面。...在此之前,需要先创建并初始化一个屏幕用来承载这个悬浮按钮。以下是一个简单的列表视图,嵌套在导航视图和选项卡视图中,列表显示了 item 加索引内容。...,是需要实现需求的第一步,悬浮按钮应该出现在屏幕的主要内容前面。...这将在列表视图上添加一个加号图像按钮。示例运行截图如下:悬浮按钮位于屏幕的右下角接着,是需要实现需求的第二步,使按钮与内容视图对齐到右下角。...总结在本文中,我们学习了如何在 SwiftUI 创建一个悬浮操作按钮,它是 Android 和 Material Design 中常用的 UI 元素。通过逐步实现悬浮按钮的各个特性来完成这个过程。

    14232

    SwiftUI 的内容边距

    今天,我们将了解 SwiftUI 引入的新内容边距概念以及它与安全区域的区别。创建示例让我们从一个简单的示例开始,演示带有一百个项目的列表。...字面上看,它是另一个安全区域,适应屏幕大小,但仅适用于文本内容。不幸的是,我们在 SwiftUI 无法访问 readableContentGuide。...在紧凑水平尺寸类别下,我们将内容移动了 200 个点,以便在大屏幕设备上居中显示。你可以在 Playground 运行此代码以查看结果。...总结本文介绍了 SwiftUI 的内容边距管理,通过对比安全区域的概念,解释了内容边距的重要性。文章创建示例开始,展示了在列表视图中如何处理内容边距的问题。...随后,通过介绍 UIKit 的 readableContentGuide 布局指南以及 SwiftUI 的 safeAreaPadding 视图修饰符,展示了在 iPad 上适配内容边距的方法。

    16132

    肘子的 Swift 周报 #014 | 发展要建立在稳定的基础上

    前一期内容|全部周报列表 原创 掌握 Core Data 的关系:基础[2] Fatbobman(东坡肘子)[3] 在众多关于 Core Data 的讨论,“对象图管理”无疑是一个频繁出现的核心概念...文章特别指出,在包含大量子视图的滚动列表等场景,应谨慎使用 AnyView,以避免不必要的性能下降。...在这篇文章,Pol Piella 详细介绍了如何在 Swift 应用程序中有效地利用稳定扩散(Stable Diffusion)模型。...该工具能够调整屏幕顶部状态栏显示的各种信息,时间、电池电量和网络信号等。开发者在准备应用商店的截图或者进行其他专业演示时,经常依赖这一工具来确保状态栏信息的一致性和专业外观。...通过这篇文章,Wals 为那些希望深入了解如何在 iOS 开发环境运用 Git 的开发者提供了一个实用且内容丰富的起点。

    12310

    SwiftUI 布局 —— 尺寸( 上 )

    欢迎大家在 Discord 频道[2] 中进行更多地交流 在 SwiftUI ,尺寸这一布局中极为重要的概念,似乎变得有些神秘。无论是设置尺寸还是获取尺寸都不是那么地符合直觉。...但由于 SwiftUI 的视图并没有提供尺寸这一属性,因此即使在 SwiftUI 诞生了数年后的今天,如何获取视图的尺寸仍然是网络上的热门问题。...在 Layout 协议,对应的是 sizeThatFits 方法。经过该阶段的协商,SwiftUI 将确定视图所在屏幕上的位置和尺寸。...在 Layout 协议,对应的是 placeSubviews 方法。此时,视图树上的每个视图都将与屏幕上的具体位置联系起来。...视图尺寸 视图渲染后在屏幕上呈现的尺寸,也是热门提问 —— 如何获取视图的尺寸中所指的尺寸。 在视图中可以通过 GeometryReader 获取特定视图的尺寸及位置。

    4.7K20

    SwiftUI + Core Data App 的内存占用优化之旅

    图片 在协调器具备的众多功能,“缓存”是其中很有特点的一个。所谓缓存,便是指当 Core Data SQLite 获取数据时,首先将数据以接近原始存储格式的形式保存在行缓存( 内存 )。...可以直接缓存获取( 如果可以命中的话 )。...由于缓存机制的存在,当我们通过 Core Data 数据库获取某个数据时( 例如图片 ),缓存中会有一份副本。...只有在访问这些托管属性时,Core Data 才会为托管对象进行数据填充( 如果缓存中有,从缓存取;如果没有则将数据数据库搬运到缓存后再从缓存取 )。...数据的多份拷贝 当图片数据 SQLite 经 Core Data 最终通过 SwiftUI 显示时,实际上在内存至少保存了三份拷贝: 缓存 托管对象上下文( 托管对象被填充后 ) 显示该图片的 SwiftUI

    2.4K40
    领券