#####集合视图的作用 集合视图是为了增强网格视图开发而在IOS6中开放的集合视图API。 #####集合视图的组成 集合视图有4个重要的组成部分,分别为: 单元格:即视图中的一个单元格。...节:即集合视图中的一个行数据,由多个单元格构成。 补充视图:即节的头和脚。 装饰视图:集合视图中的背景视图。...:重用标识符]; 刷新数据:[collectionView reloadData]; 设置代理:delegate; 设置数据源:dataSource; 是否有反弹效果:bounces,默认是YES; 设置垂直方向的反弹是否有效...UICollectionViewDataSource中提供的方法如下: //提供视图中节的个数,这个方法需要注意数据的行是否能与每一行有几个单元格整除,不能整除时要多加一行 - (NSInteger)numberOfSectionsInCollectionView...#####UICollectionViewDelegateFlowLayout提供的一些方法 //动态设置每个Item的尺寸大小 - (CGSize)collectionView:(UICollectionView
中,而是直接在UICollectionViewLayout类中的(因为它仅仅是视图相关,而与数据无关),放到稍后再说。...向数据源请求数据之前使用-registerNib:forCellReuseIdentifier:方法为@“MY_CELL_ID”注册过nib的话,就可以省下每次判断并初始化cell的代码,要是在重用队列里没有可用的...关于详细的自定义UICollectionViewLayout和一些细节,我将写在之后一篇笔记中。 ...,而在cellForItemAtIndexPath方法中重复更新此实例的业务数据来达到显示不同Cell的目的。 ...而对于业务数据的绑定与页面控件更新逻辑,笔者建议在对应业务对象的Set方法中实现,例如上面的HJInfoCellVM业务对象,就在其Set方法中实现就可以了,示例如下: - (void)setInfoVM
场景需求 一个表格视图(或者宫格视图)中,当一个单元格被选中时设置彩色样式,选中其它单元格时设置灰色样式。 2. 一个思路 通过实现选中和非选择的代理,以在适当的时机进行UI更新操作。 3....: 上述代码强制设置某单元格选中或者不选中那一刻,都不会回调tableview的选中代理方法,也不会发出通知UITableViewSelectionDidChangeNotification。...collectionView didDeselectItemAtIndexPath:(NSIndexPath *)indexPath; 4.2 代码设置默认选中状态 (要等数据加载完成之后再调用) 执行方法的主体...: 类似的,上述代码强制设置某单元格选中或者不选中那一刻,都不会回调选中代理方法,也不会发出通知。...相同点在于,手动设置选中的时候,都是不会执行didSelect方法的。
multi_table.gif 如图所示的多表视图是一个很常用的东西,之前我是用UIScrollView和UITableViewController做的。...然后要用 layout 控制布局,用最常用的 UICollectionViewFlowLayout 就行了,设置单元格的宽高,既然是翻页,宽肯定是跟屏幕等宽,高度就看你需求了,但是不要超过 collectionView...这边 cell 是会被复用的,在翻到第三页时,会复用第一页的 cell ,第四页复用第二页的 cell……依此类推,所以需要给 cell 中的tableView调用 reloadData方法,不然就算改变了表中的数据...,也不能正确的显示(奇数页都显示第一页的数据,偶数页都显示第二页的数据)。...这样就完成了一个多表视图,实际项目一般会在 table 上方放个小滑块指示器什么的,也很简单,只要在cellForItemAtIndexPath方法中根据indexPath.section来设置滑块位置就好了
写在开头 大家早上好,今天我又给大家带来了一篇关于 UICollectionView 系列的文章,在上一篇文章中,我们实现了一个酷炫的瀑布流布局,带大家初步的了解了在 UICollectionView...但是上一篇中实现的自定义布局稍显简单,只能说是比较粗略的计算了下布局各个 item 的位置,搞明白了继承自 UICollectionFlowLayout 子类它需要重载的方法的意义,那么今天这篇文章我们就来实现一个更加复杂的自定义布局...x 坐标,然后遍历每一个 Cell 的布局,找出它的中心点 x 坐标,并计算这俩个 x 坐标的偏移值,俩者的距离越小,缩放比越小,反之则越大,我这边设定缩放比最大为 1,当俩者的 x 坐标重合时,也就是没有偏移值的时候...同学你讲的没错,但是当我们 Cell 的 width 加上边距等如果不占满 UICollectionView,那么就会出现一个问题,虽然你实现了分页效果,但是你的 Cell 在滚动的过程中是不会居中的....我的思路是,距离越小,缩放比越小,缩放比最大是1,当俩个中心点的 x 坐标 // 重合的时候,缩放比就为 1. // 缩放因子
iOS中,UICollectionView和UITableView已经有系统默认选中颜色设置,但是只有无色,蓝色,灰色,三种颜色设置,如果想要其他的颜色效果,我们可以自由自定义设置。...前言 先观赏一下典型的UITableView控件案例 ? image.png 典型的UICollectionView控件案例 ?...image.png 1.单元格默认选中效果 系统默认单元格选中样式 //无色 cell.selectionStyle = UITableViewCellSelectionStyleNone ; //蓝色...(一) 通用方案: 假设你已经正确实现其他代理方法,需要在table或collection的返回cell的代理方法中作如下设置: cell.selectedBackgroundView = [[UIView...(二) 通用方案: [x] 在自己自定义的cell文件中重写如下方法: 示例: UITableViewCell.m - (void)setHighlighted:(BOOL)highlighted
以后的几篇博客中好好的研究一下CollectionView,由浅入深,层层深入,搞透CollectionView这个强大的组件。...这样比的话他俩就亲近多了。...2.当从nib文件或者Storyboard中加载集合视图时,集合视图的数据源(Data source)和代理对象(Delegate Object)是从nib或者Storyboard中获取的。...你可以重写loadView或者其他超类中的方法,但是如果你这样做, 你必须确保在你实现的方法中使用super调用了超类中相应的方法。...3.在代码中实现相应的代理,和TableView非常类似 (1) 返回Section个数的方法 Objective-C - (NSInteger)numberOfSectionsInCollectionView
以后的几篇博客中好好的研究一下CollectionView,由浅入深,层层深入,搞透CollectionView这个强大的组件。...这样比的话他俩就亲近多了。...你可以重写loadView或者其他超类中的方法,但是如果你这样做, 你必须确保在你实现的方法中使用super调用了超类中相应的方法。...3.在代码中实现相应的代理,和TableView非常类似 (1) 返回Section个数的方法 - (NSInteger)numberOfSectionsInCollectionView:(UICollectionView...*)collectionView { return 1; } (2) 返回每个Section中Cell个数的方法 - (NSInteger)collectionView:(UICollectionView
这里还是和之前一样,在cellForItemAtIndexPath中创建cell,填充数据,刷新状态等等操作。注意,这里生命周期也比iOS 9提前了。 用户继续滑动,这个时候就有不同了!...这个方法会在prefetchDataSource里面被调用,用来给你异步的预加载数据的。indexPaths数组是有序的,就是接下来item接收数据的顺序,让我们model异步处理数据更加方便。...我们可以利用这个方法来处理在滑动中取消或者降低提前加载数据的优先级。...当我们滑动速度很慢的时候,在这种“安静”的时期,Pre-Fetching API会默默的在后台帮我们预加载数据,但是一旦当我们快速滑动,我们需要频繁的刷新,我们不会去执行Pre-Fetching API...AsyncDisplayKit优化UICollectionView速度的,现在可以考虑不用第三方库优化了,系统自带的方法可以解决一般性的卡顿的问题了。
避免滥用,最好的方法就是定制规范,就好像代码中的诸多规范一样。每个团队可能有自己不同的喜好,我在此抛砖引玉,列出我们团队使用Storyboard的规范,供大家参考。...,绑定上面的类 右键这个Object,在弹出的菜单中连线 右键CollectionView 设置 Delegate 和 DataSource 等的连线 在主ViewController中如需调用这个模块的方法或者传参...从Storyboard创建竟然比纯代码更快?...在这种情况下确实比纯代码创建更快。...,随着次数的减少,Storyboard创建的速度逐渐低于存代码创建,但单次耗时仍然低于万分之一秒,这种效率是不会让用户有任何感知的,何况重复创建比纯代码还有优势,因此,这一条也不算StoryBoard
, DiffableDataSource 类似于DiffableDataSource的概念其实我们在IGList中有接触,通过为数据源设置不同的identifier实现数据源和UI的绑定。...在刷新数据源时,只要重新计算diff,计算进行局部刷新,可以大大提高UICollectionView的性能。...在modern collectionview 中也引入了新的DiffableDataSource的概念,我们不再需要设置Datasource通过一系列数据源方法返回,而是通过一开始的绑定,通过snapshot...id=d9kd3m7g 看一下Session和Video,我这里只提到了部分更新,其实WWDC19 + 20 关于CollectionView的改造还是比较多的。...这里对于性能数据监控上来说是需要注意的点, 首先,CLLocationManager的类方法被弃用了,被替换成一个属性。
平常我在业务开发中,绝大部分情况都是使用的UITableView,而UICollectionView则是在极少情况下才会去使用,这就导致了我对UICollectionView略感陌生。...UICollectionView的collectionCell支持横向&纵向布局,比UITableView的tableCell只有纵向布局要更加灵活。...例如,UITableView中的如下代理方法: - (NSInteger)tableView:(UITableView *)tableView numberOfRowsInSection:(NSInteger...中的代理方法: @protocol UICollectionViewDelegateFlowLayout @optional - (CGSize)collectionView...UICollectionViewLayout是一个抽象类,上面我讲了UICollectionViewFlowLayout,它是系统为我们提供的继承自UICollectionViewLayout的用于流式布局的
对于菊花图我们自不必多说,现在对于加载的设计体验有了比菊花加载体验更棒的方法,即大家常看到的Skeleton Screen Loading,中文叫做骨架屏。...所谓Skeleton Screen Loading,即表示在页面完全渲染完成之前,用户会看到一个占位的样式,用以描绘了当前页面的大致框架,加载完成后,最终骨架屏中各个占位部分将被真实的数据替换。...缺点是有的控件是自适应大小,在未获得数据之前,控件位置是错误的,导致占位效果有问题。...对于想要显示占位效果的View,需实现协议,在协议方法中返回SomoView列表。将这些SomoView添加到somoContainer,并显示。...源码地址:https://github.com/sharish/ShimmerRecyclerView Skeleton Skeleton也是一个使用得比较广泛的库,它现在使用闪存动画的内存优化版本,因此速度更快
深度学习在准确性和鲁棒性有压倒性优势,我们最后专注于深度学习方法,而抛弃所有传统算法。...目前较常用的深度学习图片分割模型有DeepLab系列,fcn,Unet,SegNet等,经过实验对比我们发现在这个问题中,以上方法最后收敛效果几乎是一样的,故我们选择收敛速度最快的Unet。 ?...为了更快的速度,对于backbone的设计,我们参考mobilenet,使用depthwise+pointwise替代常规卷积。...由于各类像素数量不平衡,我们的损失函数采用加权交叉熵,迭代到后期收敛速度变慢后可用Dice Coeff Loss。训练数据我们采用人工标注+仿真生成结合。...最后根据文本在单元格中的位置,判断每个单元格的对齐方式,对于对齐方式,也采取类似的聚类方法来去除噪音。由此5)也解决了。
在Excel 2007及后续版本中,如果要进行多条件计数或求和,首先考虑是否可以使用SUMIFS函数或COUNTIFS函数,因为它们的计算速度更快。 10....但为什么还要使用SUMPRODUCT函数呢?下面是一些理由。 1. 在Excel 2003及以前的版本中,没有COUNTIFS函数和SUMIFS函数。 2....与SUMPRODUCT函数或等效的D-函数相比,使用COUNTIFS函数和SUMIFS函数的公式计算速度更快。对于大数据集来说,它们能够明显地缩短计算时间。 2....如果使用的是Excel 2003或以前的版本,在数据集和条件区域中带有字段名的合适的数据集,不需要复制公式到其它单元格,那么使用D-函数更有效率,公式的计算时间比SUMPRODUCT函数更快。...FALSE;TRUE;FALSE})) 转换为: =SUMPRODUCT(-({-1;0;-1;0})) 转换为: =SUMPRODUCT({1;0;1;0}) 得到结果: 2 据测试,使用双减号比其它方法速度更快
当然,如果苹果开发者团队推出了关于 UICollectionView 的新的技术或者是我在开发中发现了新的技术点,我还是会持续更新这个系列,最终的目的是我希望通过这个系列的文章能把 UICollectionView...答案当然是肯定的,在 UICollectionView 控件中我们管这叫 Supplementary View, 翻译过来就是 "追加视图",那在 UICollectionView 中该怎么实现给每个...在接下来的内容中,你将会学到以下知识点: 1.如何在 UICollectionView 中创建 Decoration View2.自定义布局属性,计算 section 的背景图位置和大小3.实现 UICollectionView...的位置和大小计算完毕,可以在 UICollectionViewLayout 的 prepare() 方法中进行计算,相关逻辑我已经在代码中注明,代码如下: override func prepare(...最后,我们来看下最终效果: 最后 关于 UICollectionView 系列的整理,到今天就要短暂的划上一个句号了,在写这个系列之前,我对 UICollectionView 的想法就是:无非就是比
对于 UICollectionView 的理解和使用,大部分情况下可以借鉴 UITbableView 的使用方法。...可以在VC中具体实现对应的方法: 定义每个Section的约束,具体作用是靠近左右边缘的距离,这里定义的上下距离约束会被其他协议覆盖掉 -(UIEdgeInsets)collectionView:(...---- 也可以自定义一个 继承于 UICollectionViewFlowLayout 的约束,在自定义的约束中实现更强大的功能。比如这样的: ?...item 的具体Frame attri.frame = CGRectMake(cellX, cellY, cellWidth, cellHeight); 实例中在自定义的方法中高度返回的是随机值:...上的数据都是取自于它所以,此处应该把数据源也随着移动更新下 - (void)collectionView:(UICollectionView *)collectionView moveItemAtIndexPath
主要是因为一直在跑面试。 终于还是在上海入职了! 由于项目原因最终还是入了MVVM+RAC的坑 下面是正题。 Demo效果 使用MVVM+RAC请求网络数据 ?...demo.gif ReactiveCocoa简介 在iOS开发过程中,当某些事件响应的时候,需要处理某些业务逻辑,这些事件都用不同的方式来处理。...其实这些事件,都可以通过RAC处理 ReactiveCocoa为事件提供了很多处理方法,而且利用RAC处理事件很方便,可以把要处理的事情,和监听的事情的代码放在一起,这样非常方便我们管理,就不需要跳到对应的方法里...基础的话我还是推荐这篇博文 讲的都挺细的 当然不爽的话可以试试这个视频版的,也是某培训机构流出的 Demo分析 本文使用的是豆瓣API(非官方) Demo所要做的功能很简单: 从网络中请求数据,并加载到...Block比传统回调函数有2点优势: 允许在调用点上下文书写执行逻辑,不用分离函数 Block可以使用local variables.
其实它和 UITableView 相比较的话,但从创建使用看的话,是挺相似的,但其实它真的比 UITableView 要强大好多!很值得大家去好好的学习学习!...你要占我它的基本创建的话,可以参考 UITableView ,参考对比也有利于学习。...*) 这个方法中,UICollectionViewLayout 这里需要的参数看上去是 UICollectionViewLayout 类型的,其实你创建的时候是要用继承与它的 UICollectionViewFlowLayout...#import "zxFlowLayout.h" @implementation zxFlowLayout // 数组相关的属性在这里重写 // 在布局之前会调用的这个方法 -(void)prepareLayout...我注释掉的是两行的!!!
目前较常用的深度学习图片分割模型有DeepLab系列,fcn,Unet,SegNet等,经过实验对比我们发现在这个问题中,以上方法最后收敛效果几乎是一样的,故我们选择收敛速度最快的Unet。...为了更快的速度,对于backbone的设计,我们参考mobilenet,使用depthwise+pointwise替代常规卷积。...由于各类像素数量不平衡,我们的损失函数采用加权交叉熵,迭代到后期收敛速度变慢后可用Dice Coeff Loss。训练数据我们采用人工标注+仿真生成结合。...最后根据文本在单元格中的位置,判断每个单元格的对齐方式,对于对齐方式,也采取类似的聚类方法来去除噪音。由此5)也解决了。...系统流程如下图所示: 我们的方案目前集成在腾讯文档中,大家可以体验。 3.2 训练数据仿真 我们人工采集标注了数万样本。做为补充,我们也程序仿真生成样本。
领取专属 10元无门槛券
手把手带您无忧上云