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

iOS14开发-UIView

子 View 顺序和子 View 返回数组位置有关(storyboard 左侧树形结构图中先后顺序)。...} } 静态单元格 需要使用 UITableViewController。 直接在 storyboard 布局,不需要使用数据源方法,但如果需要使用到代理方法,仍然需要在控制器实现相应方法。...UITableViewDiffableDataSource 在 iOS 13 引入了新 API — Diffable Data Source,它不仅能够驱动 UITableViewUICollectionView...apply(_:animatingDifferences:):当要显示或更新数据,通过调用 NSDiffableDataSourceSnapshot 对象 apply 方法将其提供给数据源,该方法将比较当前显示快照...iOS 14 UICollectionView 功能得以继续增强,可以在一定程度上替换 UITableView

11.8K10
您找到你想要的搜索结果了吗?
是的
没有找到

手把手带你撸一个网易云音乐首页(二)

Model 在上一篇文章,我们已经确定了获取数据接口,接下来就是如何去请求数据了?...iOS 原生或第三方开源库有许多可以在 Swift 解析 JSON 方式,你可以使用你喜欢那个,例如 SwiftyJSON,HandyJSON 等,在这个工程,我坚持使用原生 Codable...我们创建 12 个不同 Sections,分别是: Banner 圆形按钮 推荐歌单 个性推荐 精选音乐视频 雷达歌单 音乐日历 专属场景歌单 云贝新歌 播客合辑 24小播客 视频合辑 因为我们获取到数据都不是同一格式...当然在 Swift 要实现多种类型并且可以轻松切换,最好方式还是使用枚举,那么就让我们开始构建 ViewModel 吧!...{ var sections = [HomeViewModelSection]() } 首先,我们先初始化 ViewModel,获取到数据存储数组: /// 首页 ViewModel

1.3K20

WWDC20iOS改变

data sources介绍数据源方面的工作 值得一提是,UICollectionView升级是2019年开始,所以20分享更多在19基础上,对这方面感兴趣同学可以从19开始看,这里推荐一篇文章...在刷新数据,只要重新计算diff,计算进行局部刷新,可以大大提高UICollectionView性能。...PencilKit可让您轻松快捷地手绘内容整合到iOS或macOS应用。...4.Catalyst Catalyst是能够iOS应用程序引入macOS基础架构,这些年,很多iOSapp开始尝试跨平台开发,事实上,Catalyst也在不断改进,今年也更多iOS库或者对应功能加入...今年API增加了Catalyst对在iOS处理物理键盘事件支持,这对设备用户行为上报是个利好消息,此外,tvOS焦点引擎API现在可用于Mac Catalyst应用程序,UICollectionView

1.7K10

iOS 面试策略之系统框架-UIScrollView及其子类

可能原因是大量操作或耗时计算阻塞主线程。 数据源问题。可能原因是网络请求太慢,不能及时得到相应数据;也有可能是需要更新数据太多,主线程一处理不过来。 然后我们针对三个问题,分别去进行优化。...建议网络端数据缓存并存储在手机端,取得部分数据根据优先级进行顺序渲染,还可以优化服务器端实现来优化网络请求。...举个例子,假设 Threshold 是 0.7,每个屏幕展示 10 个 cell,每次加载 10 个 cell 数据,当浏览第 28 个 cell ,由于会加载第 40 第 50 个 cell...数据,可是我们之前加载第 30 第 40 个 cell 数据还没有被访问。...解决方法是 Threshold 变成一个动态值,随着数据增长而增长。

2.6K21

iOS小经验:UITableView&UICollectionView设置单元格默认选中状态

场景需求 一个表格视图(或者宫格视图),当一个单元格被选中设置彩色样式,选中其它单元格设置灰色样式。 2. 一个思路 通过实现选中和非选择代理,以在适当时机进行UI更新操作。 3....:(NSIndexPath *)indexPath; 3.2 代码设置默认选中状态 (要等数据加载完成之后再调用) 执行方法主体:tableview对象 //选中 - (void)selectRowAtIndexPath...// animate between regular and selected state 注意是: 这种方法改变cell选中状态,当通过屏幕点击选中其它cell时候,UITableView并不会执行...cell时候,UITableView并不会执行- (void)collectionView:(UICollectionView *)collectionView didDeselectItemAtIndexPath...手动执行代理 上述两张方案区别在于,设置选中状态完后,屏幕点击其它cell,一个执行原celldidDeselect方法,一个不执行。

3.5K50

【IOS开发基础系列】UICollectionView专题

1 定义 1.1 什么是UICollectionView         UICollectionView是一种新数据展示方式,简单来说可以把他理解成多列UITableView(请一定注意这是UICollectionView...最简单UICollectionView就是一个GridView,可以以多列方式数据进行展示。...但值得注意,在UICollectionView,不仅cell可以重用,Supplementary View和Decoration View也是可以并且应当被重用。...关于详细自定义UICollectionViewLayout和一些细节,我写在之后一篇笔记。         ...需要注意根据滚动方向不同,header和footer高和宽只有一个会起作用。垂直滚动section间宽度为该尺寸高,而水平滚动为宽度起作用,如图。

37230

Swift| 基础语法(五)

前言 总结下 swift基础语法,里面涉及:常量&变量、Swift数据类型、逻辑分支、循环、字符串相关、数组和字典、方法书写调用等内容,考虑阅读体验分多篇来展示,希望对大家学习swift...// 程序创建UIWindow对象赋值给该程序委托对象window属性 self.window = UIWindow(frame:rect) // 创建ViewController...} 在Swift,创建tableViewCell方法可以分为两种创建tableView时候注册和需要使用时手动创建。先聊聊创建tableView时候直接注册cell: myTb?....func tableView(_ tableView: UITableView, cellForRowAt indexPath: IndexPath) -> UITableViewCell {...因为在Swift,所有对象构造器默认都是public,所以需要重写你init让其成为私有的。 这样就保证像如下代码编译报错,不能通过。 六、从相册选择照片或者拍照 ?

2K30

教你写个多表视图

把当前控制器作为一个父控制器,添加三个UITableViewController实例作为子控制器,把父控制器 scrollView 作为容器,然后添加子控制器 tableView 作为子视图...解决办法是可以自己写个重用机制,不过这显然没必要,用自带重用机制UICollectionView应该是个更好选择。...然后要用 layout 控制布局,用最常用 UICollectionViewFlowLayout 就行了,设置单元格宽高,既然是翻页,宽肯定是跟屏幕等宽,高度就看你需求了,但是不要超过 collectionView...这边 cell 是会被复用,在翻到第三页,会复用第一页 cell ,第四页复用第二页 cell……依此类推,所以需要给 cell tableView调用 reloadData方法,不然就算改变了表数据...,也不能正确显示(奇数页都显示第一页数据,偶数页都显示第二页数据)。

1.3K30

优雅处理网络数据,你真的会吗?不如看看这篇.

正如大多数 iOS 开发人员所知,显示滚动数据是构建移动应用中常见任务,Apple SDK 提供了 UITableViewUICollectionVIew 这俩大组件来帮助执行这样任务。...在这篇文章,你将会学到以下内容: 1.让你 App 可以无限滚动(infinite scrolling),并且滚动数据无缝加载 2.让你 App 数据滚动避免卡顿,实现平滑如丝滚动 3.异步存储...为了改善应用程序体验,在 iOS 10 上,Apple 对 UICollectionViewUITableView 引入了 Prefetching API,它提供了一种在需要显示数据之前预先准备数据机制...;最后用 UITableView 来显示返回数据,在 viewDidLoad 先请求网络数据来获取一些初始化数据,然后再利用 UITableView Prefetching API 来对数据进行预加载...,请看效果: image 通过日志,我们也可以清楚看到,在滚动过程是有 Prefetch 和 CancelPrefetch 操作: image 好了,这里我就简单实现了 UITableView

1.3K20

iOS 列表界面如何优雅实现模块化与动态化

业务痛点 iOS 界面开发 UITableView / UICollectionView 出场率极高,它们都是使用代理方法配置数据源,虽然这样设计理念符合了单一职责原则,但在列表变得复杂时代理方法处理变得力不从心...图1 代码简单轻量 YBHandyList 保留最小功能,代码量很少,核心思路就一句话: UITableView / UICollectionView 数据源从代理方法配置转化为数组配置。...Cell ViewModel 也可以在主 ViewModel 构建,这样 Controller 中就不用导入这些类,不过当 Cell ViewModel 需要将事件传递 Controller...,就会需要一些胶水代码通过主 ViewModel 间接传递。...YBHandyList 通过继承默认代理实现类就能拓展实现其它 UITableView / UICollectionView 代理方法。

1.4K20

Swift 探索 UICollectionView 之 SupplementaryView 和 Decoration View

答案当然是肯定,在 UICollectionView 控件我们管这叫 Supplementary View, 翻译过来就是 "追加视图",那在 UICollectionView 该怎么实现给每个...时候,需要添加到 UICollectionView section 里 headerView 和 footerView 先注册一下,它里面的三个参数分别代表是: 1.所要添加视图类本身,例如...为 UICollectionView 添加 Supplementary View 首先看下效果图: 具体代码逻辑如下,注释已经在代码添加: // // BaseAPIViewController.swift...在接下来内容,你将会学到以下知识点: 1.如何在 UICollectionView 创建 Decoration View2.自定义布局属性,计算 section 背景图位置和大小3.实现 UICollectionView...但当我真正去整理它一些技术点,我发现它实在是太灵活了,以前觉得追加视图,装饰视图这些东西很简单,几行代码事情,但事实上,当你想要去实现一些高度自定义界面的时候,你才会认识自己不足,你并没有对这些知识有更深层次认知

1.9K10

让你 App 更吸引人 5 个 iOS 库

现在,您可以创建一个继承自 ExpandingViewController UIViewController,注册在第一步创建单元格,并添加UICollectionViewDataSource。...AnimatedCollectionViewLayout 在项目之间滚动UICollectionView没有默认过渡效果动画。...要使用它,您需要将库导入项目中。然后,您必须创建一个 AnimatedCollectionViewLayout 对象,设置其动画设计器,并将其分配给您 UICollectionView。...显示倾斜单元格。...该库可用于每个 UICollectionView,水平和垂直具有动态单元格高度。 在可配置项目中,可以配置倾斜大小,倾斜方向,倾斜角度,滚动方向,行距,项目大小以及排除第一个或最后一个单元倾斜。

67830

deleteSections & deleteRows 我踩

2、点击删除回调 index 然后在数据按照 index 找到数据删除掉。...2、不会重新走 cellForRowAt 所以我们给cell赋index值不会更新,所以删除某一个cell时候。...number of sections inserted or deleted (0 inserted, 1 deleted) 这里你再理解一下,你删除之后按道理应该就剩7组了,但是在执行返回组数时候你数据源返回个数还是...这时候就要利用其我们传给 cell model了,我们传给cell model指向还是我们数据model (swift引用类型。...oc也是指针),并没有重新赋值,这时候我们就可以在 model 里面写一个 IndexPath 进去,然后在每一次删除完之后我们自己操作在数据重新排列这个modelindexPath ,在删除点击回调时候直接回调这个

1.8K30

iOS开发之DiffableDataSource

在 iOS 13 Apple 为 UITableViewUICollectionView 引入了 DiffableDataSource,让开发者可以更简单高效实现 UITableViewUICollectionView...新刷新方法为 apply,通过使用 apply 方法无需计算变更 indexPaths,也无需调用 reload,即可安全地在主线程或后台线程更新 UI, 仅需简单需要变更后数据通过 NSDiffableDataSourceSnapshot...下面以 UITableView 为例进行讲解。 实现步骤 使用 DiffableDataSource 配置当前 UITableView 数据源。...DiffableDataSource 通过调用自身 apply 方法 DataSourceSnapshot 变更后数据更新同步 UITableView。...UITableView 关键使用步骤,UIColletionView 使用类似,完整案例详见下面的链接: UITableView案例 UICollectionView案例

1.5K10

iOS 9 Storyboard 教程(二下)

,通过这个segue引用,可以传递这个方法.它用来往玩家数组里添加新Player对象来作为数据源.然后它会告诉tableView添加了新一行(在底部),因为tableView和它数据源始终是同步...拖拽一个新 TableViewControllerMain.storyboard里.在AddPlayerscene里选择Game单元格(确保你选择是整个单元格,而不是标签)并且按住ctrl并拖线...现在让我们给这个新控制器一些数据来显示吧.在GamePickerViewController.swift,把一个具有硬编码值games字符串数组添加到顶部: var games:[String]...text = games[indexPath.row] return cell } 你只是使用games数组设置了数据源并且把字符串值放到了单元格textLabel里....在Main.storyboard里,按住ctrl把tableview单元格拖拽Exit,就想你之前做一样,然后从弹框中选择unwindWithSelectedGame:. ?

2.2K10

AsyncDisplayKit 2.0 教程:入门「译」

免费App排行榜前100大多数都没有使用Swift(至少6个使用ASDK)。出于这些原因,本系列重点介绍 Objective-C。话虽这么说,我们已经包括了一个Swift版本实例项目。...注意:确保在真机上运行本教程代码,而不是在模拟器运行。 向上滑动你看到帧数丢失引起的卡顿。你不需要启动控制台,以便能发现这个应用程序需要在性能方面上一些优化。...image.png 真是一个流畅 tableView!一旦你开始做了,那就让我们做更好吧! 无限滚动 在大多数应用,服务器数据个数往往会多于当前 tableView 显示单元格数量。...你占用了多少内存 你应该提前多久加载内容 你决定什么时候忽略用户交互反映 并且当你考虑多个维度内容些问题将会变得更加复杂。...如果显示和预取都设置为一个屏幕,则它们完全相同。通常数据需要存在才能显示,所以一般预取范围应该稍大一点。那么在 node 到达该范围,就可以开始显示。 通常,该范围前侧大于后侧。

2.1K20

手把手带你撸一个网易云音乐首页(一)

前言 Hello,大家好,近期我一直在学习用 Swift 编码,由于之前很多项目我都是用 OC 实现,所以导致我现在对 Swift 还是处于一个学习阶段。...为了提高自己学习效率,每次我都会为自己定下一个短期目标,就那这次来说吧,为了加快自己上手 Swift, 我为自己定下了目标就是完成一个 Swift 版本网易云音乐 App。...” API, 无需我们进行多个接口调用以及数据拼接,就可一获取首页全部数据啦!...,接下来就是该解决如何数据可视化了,从网易云音乐首页展示效果分析来看,整体视图支持上下滚动,其中单个 Cell 视图支持横向滚动,所以这里采用 UITableView 嵌套 UICollectionView...: image 具体实现细节我会在下篇文章阐述,功能会按照我上述列出来功能顺序来一一实现,同时我也会将该工程代码放在GitHub仓库上。

99420
领券