内容可滚动。...UIActivityIndicatorView、UIProgressView UIActivityIndicatorView:无进度的进度条。 UIProgressView:有进度的进度条。...数据联动 在某一列滚动的时候,重新设置联动列的显示数据,然后进行刷新操作。...介绍 UICollectionViewCompositionalLayout 是在已有的 Item 和 Section 的基础上,增加了一个 Group 的概念。...一般用于自适应大小,会根据自动布局决定元素的大小。
但是,当需要显示大量数据时,确保平滑如丝的滚动可能会非常的棘手。所以今天正好趁这个机会,和大家分享一下处理大量可滚动数据方面的个人经验。...,然后在控件底部显示一个 Loading 动画,待请求数据返回后,Loading 动画消失,由 UITableView 或者 UICollectionView 控件继续加载这些数据并显示给用户,效果如下图所示...为了改善应用程序体验,在 iOS 10 上,Apple 对 UICollectionView 和 UITableView 引入了 Prefetching API,它提供了一种在需要显示数据之前预先准备数据的机制...首先,我先和大家介绍一个概念:无限滚动,无限滚动是可以让用户连续的加载内容,而无需分页。在 UI 初始化的时候 App 会加载一些初始数据,然后当用户滚动快要到达显示内容的底部时加载更多的数据。...如何避免滚动时的卡顿 当你遇到滚动卡顿的应用程序时,通常是由于任务长时间运行阻碍了 UI 在主线程上的更新,想让主线程有空来响应这类更新事件,第一步就是要将消耗时间的任务交给子线程去执行,避免在获取数据时阻塞主线程
横屏时,导航栏自动消失 self.navigationController.hidesBarsWhenVerticallyCompact = YES; ? 1.gif 2....单击屏幕时,导航栏自动消失 self.navigationController.hidesBarsOnTap = YES; ? 2.gif 3....弹出键弹时,导航栏自动消失 self.navigationController.hidesBarsWhenKeyboardAppears = YES; ? 3.gif 4....滑动屏幕时,导航栏自动消失 self.navigationController.hidesBarsOnSwipe = YES; ?...4.gif 经测试,这个属性适用于WebView、UITableView、UICollectionView,但是注意: 导航条隐藏时会出现大黑条遮住状态栏,且导航条不会自动再显示出来; 当多个可滚动的控件同时出现的时候
UIWindow可以不借助于父类视图显示在屏幕上,其余的视图都需要添加到父视图中才能显示。...,也就是自动添加滚动条,入下面第一个图。...UITableView类是UIScrollView类的子类,用于管理数据列表,如图二,还有其他的容器视图在这就不一一列举啦。 ? ...UITextView类支持在滚动区域内显示和编辑多行文本;而UIWebView类则提供显示HTML内容的方法 ? ...在本文刚开始的时候我们加入的view的代码都是在AppDelegate.m的文件里加的,其实没没那么做的,如果我们一直在上面的文件中实例化我们的各种控件,我们的应用程序代码会非常难维护。
如图,是一个可以多项选择的 UITableview,但是因为 iOS 的 Cell 复用机制,即下面的 reuseIdentifier 部分 let cell:UITableViewCell=UITableViewCell...Checkmark状态,但是当页面滚动至不可见某个Cell,再滚动回来时,Cell 的 Checkmark状态消失了。...当页面滑动时,我们标记为Checkmark的Cell会被复用,从而丢失这个状态。...cellForRowAtIndexPath 方法中,查看哪些cell是应该被选中过的,然后改成Checkmark状态; 结果就可能会产生数组越界、App崩溃,以及错误的indexPath...在 cellForRow 方法中,不需要for循环可以三行代码给cell加Checkmark标记。 ?
以iOS9为例,一行cell要展示在屏幕上,至少要执行5遍TableView的heightForRowAtIndexPath方法: TableView配置部分: ① 当TableView视图即将展现在屏幕上时...TableViewCell配置部分,只有当cell将要出现在屏幕上时才会出现,并且只拉取当前行的行高,这两种场景会在用户滑动TableView时不断被执行,并且根据UITableView的布局cell原理...当执行TableView的reloadData方法进行界面刷新时,系统先会把所有行的行高数据拉取一遍,之后和UITableViewCell配置部分的场景一直,会拉取即将出现在屏幕上的cell的行高数据。...至于为何UITableView在进行配置时也需要拉取所有的行高数据,我猜想其为了进行视图的一些初始化操作,例如表视图右侧滚动条的宽度和所占比例等。...关于细节方面,还有一个问题需要注意,预估的行高会影响到TableView右侧滚动条的展现,如果每个cell行高跳跃跨度十分大,滚动条宽度的配置会失准,随着用户滑动表视图,右侧滚动条可能会出现长短跳跃的情况
前言 本文源自实际开发中的需求,核心的要求有几个: 1、多个UITableview要支持左右滑动; 2、点击Tab也要有UITableview的滑动切换效果; 3、每个UITableview单独的下拉刷新和上拉加载...self.mContainerScrollView.contentSize = CGSizeMake(self.view.width * 4, 0); // 写0,关闭vertical的滚动 如果需要滚动到某一页...当UIScrollView直接添加到self.view的属性上时,如果automaticallyAdjustsScrollViewInsets为YES,会调整UIScrollView的inset以适应status...总结 多UITableview的VC本身已经有上万行代码,散布在十几个Category里面。相对于老代码的迁移,这次新增一个左右滑动功能的代码简直是微不足道。...在代码复杂度已经很高的架构里实现功能,犹如在钢绳交错的天空中行走,一不小心就踏空踩到Bug;又可能明明走在自己的这条钢绳上,结果把别人甩到坑里去。 三思而后行,代码以兼容稳健为主。
TabBarController,支持自定义TabBarItem样式或添加动画 隐藏与显示 SlideTapBar - 滚动栏菜单,向上滚动时隐藏tabbar,向下滚动马上显示tabbar。...DCPathButton - Path,4.0的弹出菜单,呼出或者关闭菜单时,多个小图标会分别按照逆时针和顺时针的方向进行滚动。...MediumScrollFullScreen - Medium的可扩展滚动页面,上下滚动时,全屏显示内容,并自然消隐上下菜单。...拖拉到一定的长度会消失,可以通过系数设置来控制拖拉的长度。气泡也支持多种属性设置。 PPDragDropBadgeView - 实现了类似于QQ 5.0的水滴拖拽效果。...KYAnimatedPageControl - 除了滚动视图时PageControl会以动画的形式一起移动,点击目标页还可快速定位。支持两种样式:粘性小球和旋转方块。
老实说,UITableView性能优化 这个话题,最经常遇到的还是在面试中,常见的回答例如: Cell复用机制 Cell高度预先计算 缓存Cell高度 圆角切割 等等. . ....*)tableView cellForRowAtIndexPath:(NSIndexPath *)indexPath 被调用了20次,不符合 需求1的要求 解决办法: cell每次被渲染时,判断当前...tableView是否处于滚动状态,是的话,不加载图片; cell 滚动结束的时候,获取当前界面内可见的所有cell 在2的基础之上,让所有的cell请求图片数据,并显示出来 步骤1: - (UITableViewCell...下的任务会暂停 停止滚动的时候 - 进入`defaultMode` - 继续执行`trackingMode`下的任务 - 例如这里的loadImage */...,可以先下载图片,再对图片进行圆角处理,再设置到cell上显示 问:YYWebImage 如何设置圆角?
因此在cell不可见时,可以将其缓存起来,而在需要时继续使用它即可。...做到前几点后,你的table view滚动时应该足够流畅了,不过你仍可能让用户感到不爽。常见的现象就是在更新数据时,整个界面卡住不动,完全不响应用户请求。...这里面还有一个学问,当下载线程数超过2时,会显著影响主线程的性能。...例如每次载入50条信息,那就可以在滚动到倒数第10条以内时,加载更多信息: - (void) tableView: (UITableView *)tableView willDisplayCell: (.../details/25467617 (good)复杂TableView在iOS上的性能优化 http://www.2cto.com/kf/201312/262041.html (ok)提升UITableView
4、上面1.2和1.3中实现的方法的区别 体验上的不同就是当左滑只有一个button时,iOS 11中可以一直左滑,滑到一定程度时,会执行点击按钮的操作,iOS 11之前的不会。...iOS 11之前如果想增大button区域,可通过在标题前后加空格的方式,但iOS 11不行,加空格无效,button大小固定,超过4个字时换行显示。...实现的思想是hook系统实现,但鉴于UITableView的view层级结构在iOS 11中有所改变,所以iOS8-10和iOS11的实现有所不同,以下分别给出。...由上图可知,左滑的操作按钮是在UITableView的子view,所以我们可以在UITableView的category中hook掉layoutSubviews方法,找到UISwipeActionPullView...上一个cell会逐渐消失,当此cell左滑操作完成时,上一个左滑的cell也会完成消失。
YOChartImageKit - 支持在watchOS上绘制图表,看它最近更新挺勤快的,可以关注一下。...LxTabBarController - 改变了原生tabbar切换tab时的生硬效果,并加入滑动切换手势(有和界面上的其它手势发生冲突的风险,可根据具体项目予以关闭),swift版本。...WXTabBarController - 在系统 UITabBarController 的基础上完美实现了安卓版微信 TabBar 的滑动切换功能,单手操作 iPhone 6 Plus 切换 TabBar...QuickRearrangeTableView - 基于 UITableView 的快速重排功能扩展子类。通过长按选定单元格然后滚动移动到指定位置。...YX_UITableView_IN_UITableView - UITableview嵌套UITableView案例实践(仿淘宝商品详情页实现),项目讲解。
1.3 关于重用 为了得到高效的View,对于cell的重用是必须的,避免了不断生成和销毁对象的操作,这与在UITableView中的情况是一致的。...但值得注意的时,在UICollectionView中,不仅cell可以重用,Supplementary View和Decoration View也是可以并且应当被重用的。...selectedBackgroundView,是cell被选中时的背景 • 最后是一个contentView,自定义内容应被加在这个view上 这次Apple给我们带来的好康是被选中...cell的自动变化,所有的cell中的子view,也包括contentView中的子view,在当cell被选中时,会自动去查找view是否有被选中状态下的改变。...需要注意根据滚动方向不同,header和footer的高和宽中只有一个会起作用。垂直滚动时section间宽度为该尺寸的高,而水平滚动时为宽度起作用,如图。
的滚动性能。...Cell 的重用很重要,通过上面的 println(cell),滚动Cell,观察打印出来的 Cell 地址。能够看到 Cell 并没有进行重用。...在 override func viewDidLoad() { } 中加入以下的代码使 Cell 重用。...记得绑定(同步骤1),Add.xib UI例如以下: 为了在Main.swift 中接收到 Add.xib 中用户输入的信息,我们在 Add.swift 定义一个协议。...然后Main.swift 遵循这个协议,在Add.xib 界面消失前获取用户输入信息。
回顾 上一篇主要讲述了AFNetworkActivityIndicatorManager数据加载指示器。这一篇主要讲述了UIKit的几个分类。...(b) 接口方法的转发 该分类的调用接口会转发到对象AFActivityIndicatorViewNotificationObserver中去实现。下面看一下是如何实现的。...receive no more delegate notifications */ } NS_ENUM_AVAILABLE(NSURLSESSION_AVAILABLE, 7_0); 如果任务没有完成,如果任务是在进行中...在通知方法的实现上就是在主线程进行开始或者停止动画。...dispatch_async(dispatch_get_main_queue(), ^{ [self.activityIndicatorView stopAnimating]; }); } 最后在dealloc
,在最低端会多出20的距离。...]; // 重新刷新数据也会重新计算 contentSize 就不会在最后在增加20了。...并且当正在计算时,将第一行cell滑出屏幕,在返回时发现小菊花已经不在了,我们可以通过重写cell的layoutSubviews,重新设置cell小菊花start,因为每当cell显示的时候都会调用layoutSubviews...计算文件大小,显示在cell上,根据不同的大小显示不同的单位GB,MB,KB等。...所以在block中使用弱引用,block内部就不会对那个对象产生强引用。其该释放的时候就会被释放,虽然已经释放,但是代码还是会往下面执行,此时对象为空。
引 开发中我们最常看到的可能是表视图UITableView了,但其实还有一个视图也很常见,特别是一些图片、商品、视频的展示界面,用UICollectionView来展现往往会更加方便。...如果熟悉UITableView的话,其实很多地方都是类似的,甚至可以说UITableView是一种特殊的UICollectionView,正如正方形是一种特殊的矩形一样,UITableView就是一种每行只放一个方块的...自定义Cell 根据UITableView的经验。首先看每个方块,也就是每个cell怎么呈现,这里的cell明显是自定义的,我们用一张图片填满cell,同时在底部居中的位置放置一个label。...为了显得真实一点,我用了一个随机数来决定每个cell显示的图片和文字,这样在呈现的时候就不会太过千篇一律。...代码中注释了一行,就是用来设置滚动方向为水平的,效果如下: 同样的内容,滚动方式变化后,呈现的效果也会变化。
4、上面1.2和1.3中实现的方法的区别 体验上的不同就是当左滑只有一个button时,iOS 11中可以一直左滑,滑到一定程度时,会执行点击按钮的操作,iOS 11之前的不会。...实现的思想是hook系统实现,但鉴于UITableView的view层级结构在iOS 11中有所改变,所以iOS8-10和iOS11的实现有所不同,以下分别给出。...1、iOS 8-10 设置标题颜色和字体 左滑操作后,UITableView的层级结构如下图: [4.png] 由上图可知,左滑的操作按钮是在UITableViewCell的子view,所以我们可以在UITableViewCell...代码如下: [5.png] 2、 iOS 11 设置标题颜色和字体 左滑操作后,UITableView的层级结构如下图: [6.png] 由上图可知,左滑的操作按钮是在UITableView的子view...上一个cell会逐渐消失,当此cell左滑操作完成时,上一个左滑的cell也会完成消失。
前言 分享iOS开发中遇到的问题,和相关的一些思考,本次内容包括:UITableView滚动问题、ARC、xcconfig、Push证书。...正文 UITableView UITableView在reloadData 的时候,如果height的高度发生较大变化,contentOffset无法保持原来的大小时,会发生滚动的效果。...UITableView还有类似的问题,如果列表项过多时,scrollToRowAtIndexPath有时并不准确,比如有1000行时滚动到第500行,此时可能会出现滚到501或者499行的情况。...最近同事遇到一个问题,以下代码会crash: 他实现了一个editingButton的getter,同时在dealloc的时候将其移除; 如果editingButton在整个生命周期都没有初始化时,...总结 这些都是在项目中遇到的一些问题,UITableView这个是老生常谈,ARC那篇文档是很好的学习资料,xcconfig需要多研究,未来随着版本和渠道增多会越来越复杂,Push在Easy APNs
领取专属 10元无门槛券
手把手带您无忧上云