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

教你写个多表视图

把当前的控制器作为一个父控制器,添加三个UITableViewController的实例作为子控制器,把父控制器中的 scrollView 作为容器,然后添加子控制器中的 tableView 作为子视图...这样做有一个问题,一旦有十几二十个表的话,内存就要爆炸了。解决的办法是可以自己写个重用机制,不过这显然没必要,用自带重用机制的UICollectionView应该是个更好的选择。...pagingEnabled = true collectionView?.bounces = false 这样滑动的时候就会有翻页的段落感,滑到边界的时候也不会有回弹效果。...因为这边只是个 Demo,所以我直接在 cell 中显示cellData的值,那cellData 的值在哪里设置呢?...这边 cell 是会被复用的,在翻到第三页时,会复用第一页的 cell ,第四页复用第二页的 cell……依此类推,所以需要给 cell 中的tableView调用 reloadData方法,不然就算改变了表中的数据

1.3K30
  • 您找到你想要的搜索结果了吗?
    是的
    没有找到

    WWDC2016 Session笔记 - iOS 10 UICollectionView新特性

    当用户滑动不是很快的时候,还感觉不出来卡顿,当用户大幅度滑动,整个UICollectionView的卡顿就很明显了。如果整个cell的DataSource又是从网络加载的,那就更加卡顿了。...接下来我们就来详细的说说掉帧的问题。 当今的用户是很挑剔的,用户需要一个很顺滑的体验,只要有一点卡顿,很可能一言不合就卸载app了。要想用户感觉不到卡顿,那么我们的app必须帧率达到60帧/秒。...我们用图标来分析一下掉帧的问题。下面会出现2种不同的帧。 第一种情况,下图是当用户轻微的上下小幅度滑动。...最后,用cancelPrefetchingAPI去迎合用户的滑动动作的变换,比如说用户在快速滑动突然发现了有趣的感兴趣的事情,这个时候停下来滑动了,甚至快速反向滑动了,或者点击了事件,进去看详情了,这些时刻我们都应该开启...如果flow layout可以用数学的方法动态的计算布局,而不是根据我们给的size去布局,那会是件很酷的事情。 iOS 10中就引入了新的API来解决上述的问题。

    2K30

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

    看看我们日常常见的 App,新闻类的今日头条,社交类的微博和微信,电商类的淘宝、腾讯,日常管理用的备忘录和图片 App 的缩放功能,都或多或少得使用了 UIScrollView 及其子类。...所以我们将同一类型的 UITableViewCell 标记为相同的 Identifier,然后用reuseIdentifier 去进行构建,配合不同内容进行批量使用。...否则每次滑动,UITableView 都会重新生成一个新的 UITableViewCell,这样极其浪费资源,而且容易造成主线程卡顿。 3....首先检查 UITableViewCell 是否进行了复用。对于复杂视图的创建,可以采用惰性加载来推迟创建时间。尽量减少视图层级也是很好的优化方法。...prepare() 完成布局之后该方法被调用,它决定了哪些 item 在 CollectionView 给定的区域内可见。我们只要取交集(intersect)即可。

    2.7K21

    iOS 性能优化

    如果对象可以复用,并且复用的代价比释放、创建新对象要小,那么这类对象应当尽量放到一个缓存池里复用。 对象调整 对象的调整也经常是消耗 CPU 资源的地方。...文本计算 如果一个界面中包含大量文本(比如微博微信朋友圈等),文本的宽高计算会占用很大一部分资源,并且不可避免。...当在较短时间显示大量图片时(比如 TableView 存在非常多的图片并且快速滑动时),CPU 占用率很低,GPU 占用非常高,界面仍然会掉帧。...视图的混合 (Composing) 当多个视图(或者说 CALayer)重叠在一起显示时,GPU 会首先把他们混合到一起。如果视图结构过于复杂,混合的过程也会消耗很多 GPU 资源。...这时可以使用 stat 代替 NSFileManager,直接获取文件属性: 参考资料 微信读书 iOS 性能优化总结 iOS实时卡顿监控 iOS 保持界面流畅的技巧

    2.9K20

    iOS 优化界面流畅的技巧

    如果对象可以复用,并且复用的代价比释放、创建新对象要小,那么这类对象应当尽量放到一个缓存池里复用。 对象调整 对象的调整也经常是消耗 CPU 资源的地方。...文本计算 如果一个界面中包含大量文本(比如微博微信朋友圈等),文本的宽高计算会占用很大一部分资源,并且不可避免。...当在较短时间显示大量图片时(比如 TableView 存在非常多的图片并且快速滑动时),CPU 占用率很低,GPU 占用非常高,界面仍然会掉帧。...ASDK 有个 Feed 列表的 Demo:SocialAppLayout,当列表内 Cell 过多,并且非常快速的滑动时,界面仍然会出现少量卡顿,我谨慎的猜测可能与这个问题有关。...在这个预设内,你能查看到几乎所有与显示有关的数据,比如 Texture 数量、CA 提交的频率、GPU 消耗等,在定位界面卡顿的问题时,这是最好的工具。 参考:iOS 保持界面流畅的技巧

    1.5K10

    AsyncDisplayKit 2.0 教程:入门「译」

    你可以通过 AsyncDisplayKit 的力量来解决这个问题 ASDisplayNode 简介 ASDisplayNode 是ASDK的核心类,它只是一个类似于 MVC 中的 “View” 一样的UIView...没有必要担心Cell的复用以及初始化一个Cell的方法。您可能会注意到您现在返回了CardNode,而不是CardCell。 这让我想到一个重要的点。...image.png 真是一个流畅的 tableView!一旦你开始做了,那就让我们做的更好吧! 无限滚动 在大多数应用中,服务器的数据点的个数往往会多于当前 tableView 中显示的单元格数量。...假设你有一个竖直滚动的tableView,在其中某些Cell包含了水平滚动的 collectionView。...来到二次元 现在,你已经有了完整的 AnimalTableController, 你可以把它做为 ASPagerNode 的一个page。

    2.2K20

    TableView优化之快速滑动下的忽略加载

    TableView优化之快速滑动下的忽略加载 系列文章: TableView优化之高度缓存功能 TableView优化之加载图片的优化逻辑 TableView优化之快速滑动下的忽略加载 ---- 最近在搞什么...objectAtIndex:indexPath.row]; cell.selectionStyle = UITableViewCellSelectionStyleNone; //清除cell内容,解决复用问题...首先他cell调用了clear方法,这是VVeboTableViewCell中作者自己实现的方法,用于清除cell上面展示的内容,这样可以避免因cell重用而导致没有绘制的cell会显示之前的内容的问题...然后是判断needLoadArr中是否包含有当前indexPath,若没有返回。继续判断当前TableView是否处于快速回到顶部的过程中,如果是的话也不绘制。...当然了这部分内容不是对性能的优化,而是对代码的优化。 天天写TableView里面的代理是不是很烦人啊,千篇一律又不能不写。所以想一个方法只写一次以后拿来直接用吧=。= 效果图 真机不卡!真机不卡!

    1.7K33

    设计模式之结构型模式(下)

    这个呢其实没什么可多说的,无非是新建一个类用作用户界面,将一个复杂子系统中的类组合起来,对外提供一个易用的高层接口,隐藏内部细节。这里蕴含分层的思想,可以让系统模块化程度更高,便于复用,也便于使用。...享元(Flyweight) 享元模式运用共享技术有效地支持大量细粒度的对象。...比如 TableView 和 CollectionView 中 Cell 的重用机制,就是运用享元模式的一大典范。...说到这里想必大家也明白享元模式的作用了,对的,就是为了节约内存。...套用公式并不能解决所有问题,所以大家在学习设计模式的时候还是要多学习它的设计思路,知道每个模式是针对什么场景设计的,这样设计的好处与弊端,它具体是怎么实现的,场景变化的时候可以做怎样的变通,等等。

    39950

    春招路上孤独的iOSer的心路历程(面经)

    没抱太大希望的给我过了。中间由于手机停机了(自己没发现),hr还加了我微信约二面(被感动!!),17号二面全程被虐(听说面试官是抖音那边转到这个部门的)。。幸好最后算法题也写出来了,也让过了。...现在给定b 求a 二面 45分钟 自我介绍 项目 15分钟 加载图片卡顿是为什么 有哪些优化方案 图片解码时机 设计os的复制粘贴 假如现在有一个可以需要在三维中写字并输出结果的课题 怎么做这个课题 你的思路...算法题 数字转汉字 阿里 2020年 2-17 电话一面 自我介绍 栈和堆的区别 各种排序算法比较(冒泡、快速排序、归并排序、桶排序、计数排序) 数组、链表、哈希表优缺点 uiview与calayer...的联系与区别 为什么uiview可以响应事件 tableview的重用机制以及与collectionview的区别 cpu和gpu的区别 离屏渲染 mvvm与mvc 项目亮点 野指针处理 内存管理 深拷贝与浅拷贝...解决循环引用又出什么问题 13.循环引用出现的常见情况 14.autoreleas谈谈 15.timer为什么在子线程中不工作 16.为什么学iOS 2-25 二面 二面 17分钟 自我介绍 实习多久、

    2.5K20

    iOS函数响应式编程以及ReactiveCocoa的使用

    打算在项目中大面积使用RAC来开发,所以整理一些常用的实践范例和比较完整的api说明方便开发时随时查阅 声明式编程泛型Declarative programming 函数反应式编程是声明式编程的子编程范式之一...subscribeNext:^(id x) { //3 NSLog(@"subscribeNext - %@", x); }]; } 上面的RACObserve会引起引用不释放的问题...RACEmptySignal :空信号,用来实现 RACSignal 的 +empty 方法; RACReturnSignal :一元信号,用来实现 RACSignal 的 +return: 方法; RACDynamicSignal...RACSequence RAC中的集合类 RACCommand RAC中用于处理事件的类,可以把事件如何处理,事件中的数据如何传递,包装到这个类中,他可以很方便的监控事件的执行过程。...RACScheduler RAC中的队列,用GCD封装的。

    2.1K11

    用这些 iOS 技巧让你的 APP 性能更佳

    如果不使用可复用的 tableViewCell ,我们必须为每一行创建一个新的 tableViewCell,如下所示: func tableView(_ tableView: UITableView,...如果你快速滚动表视图,期间会动态分配许多小块内存,这个过程将使 UI 变得卡顿!...iOS 中 tableViewCell 复用队列图解(查看大图) 通过使用队列来存储 tableViewCell,表视图中不需要创建一千个tableViewCell。...请记住,当应用程序被用户强行关闭时,操作系统将删除已保存的状态,避免在状态保存和恢复时出现问题。...如果视图具有透明度(即 alpha 低于 1.0),那么 iOS 将需要做些额外的工作来混合视图层次结构中不同的视图层以计算出哪些内容需要展示。

    3.2K30

    微信反复读取你的相册!官方回应:为便于聊天时快速发图,最新版本将取消

    △图源:微博 这两天,一位数码博主在网上曝出的这件“隐私问题”成为了焦点。 毕竟很多人每天都离不开微信,可以是说与大多数人利益相关了。...并且微信还补充解释道,这样的操作是为了方便用户在微信聊天中按“+”时可以快速发图。 但经此事发酵之后,微信表示会在最新版本中取消这样的操作,优化快速发图功能。 相册是如何被“偷窥”的?...而在后续的发现中,有如此行径的还不止微信这一家。 就连QQ、淘宝等多款国产 App 均存在后台频繁读取用户相册的行为。...博主以微信为例,很贴心的给出了如下的tips: 进入 设置 > 下拉找到「微信」 > 相册 > 将「所有照片」改为「选中的照片」或「不允许」 在同设置页面, 关闭「后台 App 自动刷新」开关 在同设置页面...6大奖项锁定AI TOP企业 「2021中国人工智能年度评选」报名中!本次评选将从公司、人物、产品三大维度寻找优秀的AI企业,欢迎大家扫码报名参与。

    40330

    iOS 开发:『Runtime』详解(二)Method Swizzling

    所以,在使用 Method Swizzling 的时候,应该保持足够的谨慎。 例如,你在一个类中重写一个方法,并且不调用 super 方法,则可能会出现问题。...所以被用于 Method Swizzling 的方法必须是当前类自身的方法,如果把继承父类来的 IMP 复制到自身上面可能会存在问题。...、CollectionView 异常加载占位图 在项目中遇到网络异常,或者其他各种原因造成 TableView、CollectionView 数据为空的时候,通常需要加载占位图显示。...当返回数据,刷新 TableView、CollectionView 时候,进行判断,如果数据为空,则加载占位图。如果数据不为空,则移除占位图,显示数据。...以 TableView 为例: 为 TableView 建立一个 Category,Category 中添加刷新回调 block 属性、占位图 View 属性。

    2K31
    领券