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

SwiftUI如何记录当前显示在CollectionView上的网格项目的索引?

SwiftUI中,可以使用@State属性包装器来记录当前显示在CollectionView上的网格项目的索引。@State属性包装器用于声明一个可观察的状态属性,当该属性的值发生变化时,视图会自动更新。

以下是一个示例代码,展示了如何使用@State属性包装器来记录当前显示的网格项目的索引:

代码语言:txt
复制
import SwiftUI

struct ContentView: View {
    @State private var currentIndex: Int = 0
    
    var body: some View {
        VStack {
            Text("Current Index: \(currentIndex)")
            
            ScrollView {
                LazyVGrid(columns: [GridItem(.adaptive(minimum: 80))]) {
                    ForEach(0..<100) { index in
                        Text("\(index)")
                            .frame(width: 80, height: 80)
                            .background(index == currentIndex ? Color.blue : Color.gray)
                            .onTapGesture {
                                currentIndex = index
                            }
                    }
                }
            }
        }
    }
}

struct ContentView_Previews: PreviewProvider {
    static var previews: some View {
        ContentView()
    }
}

在上述代码中,我们使用@State属性包装器声明了一个名为currentIndex的状态属性,用于记录当前显示的网格项目的索引。在LazyVGrid中,我们使用ForEach循环创建了一系列文本视图,并根据当前索引是否与currentIndex相等来设置不同的背景颜色。当用户点击某个网格项目时,通过onTapGesture闭包将currentIndex更新为对应的索引。

这样,每次用户点击网格项目时,currentIndex的值都会更新,并且视图会自动刷新以反映出最新的索引值。

关于腾讯云相关产品和产品介绍链接地址,由于要求不能提及具体的云计算品牌商,因此无法提供相关链接。但是,腾讯云提供了丰富的云计算服务和解决方案,你可以访问腾讯云官方网站以获取更多信息。

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

相关·内容

UI篇-UICollectionView 补充

前言 相信大家对于 UICollectionView 已经比较熟悉了,这是一篇个人随笔,只是记录了一些自己觉得应该注意地方,大家可以借鉴一下。...可以VC中具体实现对应方法: 定义每个Section约束,具体作用是靠近左右边缘距离,这里定义上下距离约束会被其他协议覆盖掉 -(UIEdgeInsets)collectionView:(...) 开始特定索引路径对cell(单元)进行Interactive Movement(交互式移动工作)。...数据都是取自于它所以,此处应该把数据源也随着移动更新下 - (void)collectionView:(UICollectionView *)collectionView moveItemAtIndexPath...—————— 瀑布流可以保证图片原始比例情况下,灵活展现内容,相对于传统使用相同大小网格展现大量图片,效果要好上很多,而实现瀑布流方式有很多种,网上比较流行有三种实现方式。

1.5K20

iOS开发之窥探UICollectionViewController(五) --一款炫酷图片浏览组件

自定义CollectionView可谓是非常灵活,其灵活性也决定了其功能强大。CollectionView自定义就是其Cell高度可定制属性,通过对Cell赋值不同属性来达到自定义目的。...切换图片时进行一个360度旋转,并且修改Cell层级,当前显示图片层级最高。并且移动时,如果要显示图片不在屏幕中央就做一个位置矫正。点击图片时,使用仿射变换使其放大,再点击使其缩小。...10 CGFloat contentOffsetX = self.collectionView.contentOffset.x; 11 //根据滑动位移计算当前显示时第几个Cell...CGRectEqualToRect(newBounds, self.collectionView.bounds); 4 } (6).重写下面的方法是为了修正CollectionView滚动偏移量,使当前显示...Cell出现在屏幕中心位置,方法如下: 1 //修正Cell位置,使当前Cell显示屏幕中心 2 - (CGPoint)targetContentOffsetForProposedContentOffset

1.4K80

Swift 自定义布局实现瀑布流视图

说到布局 layout,大家开发过程中与 UICollectionView 搭配使用最多 应该就是 UICollectionViewFlowLayout 了,这是 UIKit 提供给开发者最基础网格布局...那么,我们该如何来实现一个自定义布局呢!...] 动态尺寸 有的人会问,瀑布流视图惊艳之处就在于它每个 Cell 尺寸都是不一致,那如何生成动态高度 Cell 呢!...这里我策略就是通过追踪计算每一列高度值来得出最小高度那一列,由于已知当前有最小高度那一列高度值以及索引值,那我们就可以为一个 Cell 计算得出它新 X 坐标 和 Y 坐标,然后重新对该 Cell...: 好了, 利用 UICollectionView 控件与自定义布局实现瀑布流内容到此就结束了,最后附上项目的源码地址: https://github.com/ShenJieSuzhou/SwiftScrollBanner

2.3K30

Swift 周报 第十二期

您可以随时 App Store Connect 中更改您 App 和 App 内购买项目的价格 (包括自动续期订阅)。如果您有提供订阅项目,您可以选择为现有订阅者保留当前价格。...[13] 摘要: Apple WWWDC 2022 推出了 SwiftUI Charts, SwiftUI 视图中实现图表功能变得非常容易。...本文介绍了几种自定义折线统计图。 如何SwiftUI 中创建条形图[15] 摘要: 本文展示了如何创建一个垂直条形图,其中 Y 轴表示每个类型值。...本文主要介绍了如何创建水平条形图,如下图: 使用 SwiftUI Eager Grids[17] 摘要: 本篇文章主要讲解如何使用 Eager Grids 绘制网格视图,其中讲解了十几种网格实现方法...,并详细介绍了网格实现原理。

2.5K10

【visionOS】从零开始创建第一个visionOS程序

潜入特色示例应用程序页面链接 使用Hello World探索所有visionOS应用程序核心概念。了解如何使用Happy BeamARKit检测自定义手势。发现流2D和立体媒体与目的地视频。...在任何SwiftUI应用中,你都可以使用场景将内容放到屏幕。场景包含要在屏幕显示视图和控件。场景还定义了这些视图和控件出现在屏幕外观。...当一个人手指与屏幕项目占据相同空间时,系统就会报告一个交互。额外手指和手部动作定义手势类型。 这张照片显示了一个人桌子物理键盘上打字。一个虚拟建议条显示物理键盘上方。...在为visionOS构建应用程序时,请考虑如何为应用程序界面添加深度。该系统提供了几种显示3D内容方法,包括现有窗口中,卷中以及沉浸式空间中。选择最适合你应用和你提供内容选项。...获得用户许可后,您还可以使用ARKit与沉浸式空间将内容整合到他们周围环境中。例如,您可以使用ARKit场景重建来获得家具和附近物体网格,并让您内容与该网格进行交互。

70340

Text 中实现基于关键字搜索和定位

欢迎大家 Discord 频道[2] 中进行更多地交流前些日子,一位网友聊天室中就如下 问题[3] 与大家进行了交流与探讨 —— 如何通过 Text + AttributedString 实现类似文章关键字检索功能...为定位及智能高亮保存更多数据为了方便之后搜索结果显示和定位,每次搜索均需记录如下信息 —— 搜索结果总数量、当前高亮结果位置、包含搜索结果 transcription、每个 transcrption...View 添加显式标识符后( 使用 id 修饰器),视图刷新时,List 将会为 ForEach 中所有视图创建实例( 并非渲染 )用以比对视图类型构造参数是否发生变化,但仍然只会渲染屏幕显示部分...为了达成这个目标,我们首先需要记录在 List 中,哪些 transcription 正在被显示,以及该 transcription 索引。...通过 onAppear 和 onDisappear 即可达成此目的:var onScreenID: [UUID: Int] = [:] // 当前屏幕中正显示 transcription IDList

4.2K30

iOS开发之资讯类App常用分类控件封装与实现(CollectionView+Swift3.0+)

之前博客中,我们系列介绍了UICollectionView各种回调,以及如何自定义CollectionView布局,并给出了如何使用CollectionView自定义瀑布流。...上面这个效果就是我们今天博客中所实现效果,而下方这两个效果是我们之前聊UICollectionView以及自定义布局时所给出相应Demo, 下方Demo所对应源码也Gitbub上进行了分享...下方就是我们所封装控件调用方式,下方二维数组dataSource就是我们所封装控件中CollectionView数据源,该数据源中数据要遵循我们指定CEThemeDataSourceProtocal...当然该协议代码实现比较简单,就一个menuItemName()方法,该方法返回值是一个字符串。该字符串就是我们要在Cell显示Menu名字。 ? 下方就是创建我们数据测试数据相关代码。...当然,该方法是iOS9以后才添加。启动后我们将当前Cell隐藏,然后将当前Cell生成快照,让后让该快照跟着我们手指移动即可。具体代码如下所示: ?

1.5K50

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

因此,如果你正在创建一个视图来显示可滚动内容,并可能进行选择操作,那么 iOS 和 macOS 使用 List 将有最好体验。...SwiftUI 4.0 Form Ventura 表现与以往版本有很大不同。形式更接近 iOS 状态,同时也对 mac 进行了更多适配。...Table 中上下文菜单Q:如果我 TABLE 添加了一个上下文菜单,我如何确定哪一行导致了菜单显示(无需选择该行)?...Swiftcord[12] 代码展示了如何SwiftUI 下实现倒置列表。阅读 优化 SwiftUI List 中显示大数据集响应效率[13] 一文,了解苹果工程师推荐方法。...SwiftUI 当前缺乏动画完成后回调机制。动画不复杂情况下,可以通过创建一个符合 Animatable 协议 ViewModifier 来同步观察动画进程。

14.7K30

SwiftUI 动画机制

开发者经常需要面对:如何动、怎么动、什么能动、为什么不动、为什么这么动、如何不让它动等等困扰。对 SwiftUI 动画处理逻辑了解不够深入是造成上述困扰主要原因。...某些场景下,我们可能需要在某一个依赖(状态)发生改变时,所有依赖于该项目的内容都产生平滑动画(例如代码二),在其他场景中,可能又仅需部分内容产生平滑动画(例如代码一),通过调整 animation...至于如何利用这些动画数据(插值数据)生成动画,则是由与特定依赖关联可动画部件决定。...有关显性标识方面的内容可以参阅 优化 SwiftUI List 中显示大数据集响应效率[8] 一文 遗憾与展望 理论,一旦你掌握了 SwiftUI 动画机制,就应该能轻松地驾驭代码,自由地控制动画... ViewBuilder 研究(下) —— 从模仿中学习[9] 一文中,我们展示了 SwiftUI Text 是如何处理它扩展方法

14.6K40

添加多个屏幕-创建格线布局

在上一节中,我们学习了如何使用按钮更改iPhone屏幕。让我们进一步推动!我们将实现一个CollectionView,我们将能够切换到您想要壁纸。该CollectionView将是滚动水平。...我们图像下面插入一个标签。文本是iPhone X并将底部约束为0并将容器中水平中心约束。“ 属性”检查器中,将“滚动方向”更改为“ 水平”并取消选中“ 显示”指示器。... Cell 文件中,为索引声明一个变量并使其为0.然后,screenImageButtonTapped值内,调用索引及其类型Int。因此,它上面的代理将具有相同值,它将返回一个索引。...转至DialogViewController,放型指数诠释价值里面screenImageButton。返回cell之上,将cell索引更改为索引路径行。...这部分是一个非常漫长而艰难部分。我们学到了很多关于如何实现Collection View知识。我们还学会了如何委派。这是ARKit 2扩展结束,我们已经走了很长路!我希望你喜欢这门课程!

2.8K40

使用 UICollectionView 实现首页卡片轮播效果

UICollectionView 是 iOS6 之后引入一个新 UI 控件,与 UITableView 有着很多相似的地方,开发过程中我们都会选择使用它们俩来为 App 整个页面进行布局,比如说淘宝首页...思路分析 通过观察上面的图我们可以得出,这个网易云轮播控件有三个特点,分别是: 1.支持图片手动横向滚动2.支持图片自动滚动播放3.底部分页控件会高亮显示当前图片是哪一张 好了,既然已经分析出来了它特点...,但是如果要正式 app 中使用,并且达到很好用户体验还是有很大优化空间。...首先第一点,我们要对 UIPageControl 样式进行调整,加上约束,并提供一个获取当前索引接口,代码如下: extension JJNewsBanner { override func...return cellIndex % self.sourceCount } else { return 0 } } // 当前页面索引

1.8K20

使用 SwiftUI 创建一个灵活选择器

前言 最近,我正在开发一个 Dribbble 找到设计 SwiftUI 实现时,我想到了一个点子,可以通过一些酷炫筛选器扩展该项目以缩小结果列表。...使用 UIKit 时,我总是将这种类型视图实现为具有特定 UICollectionViewFlowLayout UICollectionView。但在 SwiftUI 中该如何实现呢?...(不能适应一行元素),并通过减去当前宽度来更新 HStack 行宽。...VStack 高度是根据两个值计算: 输入数据中任何项目的高度(类似于宽度计算,通过使用 reduce 函数,总结与项目相关所有高度) 将显示 VStack 中行数 private func...然后,详细介绍了实现该选择器逻辑,包括如何处理选项布局、宽度和高度,以及如何处理用户与按钮交互。 最后,提供了一个简单视图实现,可以 SwiftUI 中使用该选择器。

24520

Ask Apple 2022 中与 Core Data 有关问答 (下)

如何更新通过文件系统删除 Core Data 数据 Spotlight 索引Q:使用 Spotlight 索引 Core Data 中内容时,是否可以指定 Spotlight 索引存储位置?...A:听起来这是一个有价值功能建议,鼓励你提交反馈请求!当前,从应用程序中调用 API 是从索引中删除项目的唯一方法。当前 Spotlight 确实无法处理类似的状况。...A:你使用正是当前推荐方式。此外,纯文本属性可以被 Spotlight 索引,方便它们被系统搜索。生成对应数据纯文本以进行检索,是一种很常见方式。...如何从 UserDefaults 转换至 Core DataQ:目前,我应用程序使用 @AppStorage 进行数据持久化。我有三个主要模型对象,它们被存储在当前设备。...我注意到,当我使用 Safari 客户端从 CloudKit 数据库中删除一条记录时( 通过 CloudKit Dashboard ),该对象仍会保留在设备 Core Data 数据存储中。

3.2K20

ViewBuilder 研究(下) —— 从模仿中学习

SwiftUI 如何处理视图 SwiftUI 从加载视图、响应状态到屏幕绘制大概经历如下过程: 从根视图开始按视图层级结构沿特定分支(依据初始状态)逐个实例化视图,直到满足当前全部显示所需 上述实例化后视图值...(结构值,非 body 值)将被保存在 SwiftUI 托管数据池中 根据视图依赖信息 AttributeGraph 数据池中创建与当前显示视图树对应依赖图,并监控依赖变化 依据 SwiftUI...,按视图层级结构依当前状态逐个实例化视图类型(到满足全部显示所需为止) 将已不再需要参与布局和渲染视图值从 SwiftUI 数据池中移除,并在数据池中添加上新增视图值 对于仍需显示但视图值发生变化视图...类型信息 // EmptyView 此时如果现在我们闭包中添加两个 EmptyView 会如何呢?...ViewBuilder 解析类型(通过 buildOptional ) 虽然两者转译后类型略有不同,但在显示效果是完全一样

3K20

Swift 自定义布局实现 Cover Flow 效果

中该如何创建自定义布局。...但是一篇中实现自定义布局稍显简单,只能说是比较粗略计算了下布局各个 item 位置,搞明白了继承自 UICollectionFlowLayout 子类它需要重载方法意义,那么今天这篇文章我们就来实现一个更加复杂自定义布局...第三步,实现 Cell 滚动是分页带阻尼效果,并且滑动停止时候当前放大 Cell 居中显示,有的同学会说:UICollectionView 自带了分页效果,只需要设置 isPagingEnabled...那该如何不通过设置 isPagingEnabled 来实现 Cell 分页滚动和居中显示呢!请接着往下看....指的是滚动速度;那既然我们能获取到当前滚动即将停止坐标,那我们就可以修改它,使它偏移点坐标能让 Cell 居中显示,在这里就不做更多阐述了,直接浏览下方代码吧!

1.6K20

AVKit框架详细解析(四) —— 基于AVKit 和 AVFoundation框架视频流App构建

Adding Local Playback 您可以播放两种类型视频。 您将看到第一个是当前位于手机存储中类型。 稍后,您将学习如何从服务器播放视频流。...2) 您使用初始值设定创建 LoopingPlayerUIView 新实例并返回新实例。 3) SwiftUI 需要更新底层 UIView 时会调用此方法。 现在,将其留空。...Playing Video Efficiently 继续之前要注意一件事是播放视频是一资源密集型任务。 事实,即使您开始观看全屏视频,您应用程序也会继续播放这些剪辑。...缺点是,撰写本文时,iOS 14.5是可用最新版本,VideoPlayer SwiftUI 视图未显示画中画按钮。...尝试设备运行。

6.9K10

SwiftUI 视图生命周期研究

视图值树通常只保存当前布局、渲染所需内容(个别情况下,会缓存少数不参与布局、渲染视图值), app 生命周期中,随着 State 变化而不断地变化。...处理结构体实例销毁也并没统一规律。...: "2") .tag(2)} SwiftUI 将只最初创建两个 ShowMessage 实例,无论如何切换 selection,TabView 将全程只使用这两个实例。...• List 和 LazyVStack 中,SwiftUI 出于效率考虑,即使 Cell 视图移出显示范围,它视图仍将保留在视图值树上(视图仍将存续)。...,将完成依赖建立工作•视图生命周期中,只有一个依赖副本•视图生命周期中,无论创建多少个实例,同一时间只有一个实例可以连接到依赖•依赖为视图 Source of truth 了解 SwiftUI

4.3K30
领券