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

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

标准UICollectionView包含三个部分,它们都是UIView子类:     • Cells 用于展示内容主体,对于不同cell可以指定不同尺寸和不同内容,这个稍后再说     • Supplementary...:@"MY_CELL_ID"]; //如果没有可重用cell,那么生成一个  if (!...,用作cell平时背景     • 再其上是selectedBackgroundView,是cell被选中时背景     • 最后一个contentView,自定义内容应被加在这个view上         ...需要注意根据滚动方向不同,header和footer高和宽中只有一个会起作用。垂直滚动时section间宽度为该尺寸高,而水平滚动时为宽度起作用,如图。     ...加载过程         加载过程是先加载UICollectionView委托回调配置,再初始化UICollectionViewCell

40730

iOS流布局UICollectionView系列四——自定义FlowLayout进行瀑布流布局

更加灵活进行布局,但都限制在系统为我们准备好布局框架中,还是有一些局限性,例如,如果我要进行瀑布流似的不定高布局,前面的方法就很难满足我们需求了,如下: ?...]init];     [super prepareLayout];     //演示方便 我们设置为静态2列     //计算每一个item宽度     float WIDTH = ([UIScreen...    //这个数组主要作用是保存每一列高度,这样在布局时,我们可以始终将下一个Item放在最短列下面     CGFloat colHight[2]={self.sectionInset.top...()%150+40;         //哪一列高度小 放到那一列下面         //标记最短列         int width=0;         if (colHight[0]<colHight...:(NSInteger)section{     return 100; } -(UICollectionViewCell *)collectionView:(UICollectionView *)collectionView

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

iOS 封装跑马灯和轮播效果

iOS UICollectionView实现跑马灯和轮播效果.gif 功能描述:WSL_RollView 是基于UICollectionView实现支持水平和垂直两个方向上分页和渐进循环轮播效果...一、实现方法 ①、 首先用UICollectionView和计时器实现一个基本水平滚动效果,如下图,这个太简单就不在此详述。...iOS UICollectionView ②、对比上面的效果图,我们还需要解决分页宽度和循环滚动问题。...自定义分页宽度:默认分页宽度UICollectionView宽度,所以当分页宽度不等于UICollectionView宽度或分页间隔不等于0时会出现错误,这时就需要我们通过自定义UICollectionViewFlowLayout...,示例代码请看这儿WSL_RollView;如果小伙伴们有其他实现方法,欢迎再此留言交流?????

4.1K40

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

我们知道在 UICollectionView 属性中,有一个分页属性:isPagingEnabled,当设置成 true 时,每次滚动位移量等于它自身 frame 宽度;当不设置这个分页属性,它默认值是...记录了滚动目标位移坐标,通过这个坐标和记录上次滚动坐标可以判断出是向左滚动还是向右滚动 如果俩坐标的水平方向相减绝对值大于某个固定值(譬如说 item 宽度 8 分之一),则可以判断发生了分页...,然后通过 proposedContentOffset 位移坐标和 item 宽度大小来计算出当前滚动页码;如果小于那个固定值,则不发生分页 最后记录最新偏移坐标,然后返回 UICollectionView...播客 终于讲到最后一个 UI 了,先看下效果: image 经历过构建上面这么多 UI 后,想必看到这个效果,大家都心知肚明了,还有比用 UICollectionView 更简单方式了吗?...搜索 关于如何构建不同 Cell 到这里就讲完了,如果大家有疑问的话,欢迎在评论区或者我公号中发信息给我。 接下来,我们开始讲首页最后一部分---搜索框。

2.3K10

使用 UICollectionView 实现分页滑动效果

在上篇博客中,给大家演示了如何利用 UICollectionView 这个强大控件去实现一个卡片轮播效果,后来有网友联系我说:"他遇到一个问题,当他滚动 item 宽度与屏幕宽度一致时,滚动效果是正常...这个问题确实是存在,因为在 UICollectionView 属性中,有一个分页属性:isPagingEnabled,当设置成 true 时,每次滚动位移量等于屏幕宽度;当不设置这个分页属性,...proposedContentOffset 记录了滚动目标位移坐标,通过这个坐标和记录上次滚动坐标可以判断出是向左滚动还是向右滚动4.如果俩坐标的水平方向相减绝对值大于某个固定值(譬如说 item...宽度 8 分之一),则可以判断发生了分页,然后通过 proposedContentOffset 位移坐标和 item 宽度大小来计算出当前滚动页码;如果小于那个固定值,则不发生分页5.最后记录最新偏移坐标...,如果小于最小contentsize或者最大contentsize重置值 if lastOffset.x < offsetMin { lastOffset.x

2.8K20

仿淘宝类电商秒杀分页控件(附源码)

前言 最近公司一个电商应用要实现一个类似淘宝淘抢购页面逻辑功能,起初本来想找个第三方组件,后面发现网上并没有类似的实现。所以后面决定自己封装一个,效果如下所示: ? 2....: /** MenuItem 宽度 */ @property (nonatomic, assign) CGFloat itemWidth; /** Menu 高度 */ @property (nonatomic...*/ @property (nonatomic, strong) UIColor *maskFillColor; /** Menu mask三角形宽度 */ @property (nonatomic...实现: 知道了原理,那就开始构思: 1、我实现思路是用UICollectionView来实现滚动菜单; 2、需要两个UICollectionViewUICollectionViewCell文字内容一样...,一个UICollectionView在遮罩下面,一个在遮罩上面; [self addSubview:self.collectionViewBottom]; [self addSubview:self.maskView

1.3K20

WWDC2016 Session笔记 - iOS 10 UICollectionView新特性

这就要谈到新cell生命周期了。 先来看看老 UICollectionViewCell声明周期。当用户滑动屏幕,屏幕外有一个cell准备加载显示进来。...当cell马上要进入屏幕时候,就会调用willDisplayCell方法。这个方法给了我们app最后一次机会,为cell进入屏幕做最后准备工作。...UICollectionView流畅滑动解决了,那么在UICollectionViewCell在加载时候所花费时间,怎么解决呢??...,然后给estimatedItemSize设定一个常数, 最后UICollectionViewFlowLayout 就会自动计算高度了。...refreshControl,再关联一个action事件,最后把这个新refreshControl赋给想要控件对应属性即可。

1.9K30

iOS流布局UICollectionView系列六——将布局从平面应用到空间

如果我们将系统pickerView沿着y轴旋转90°,你会发现侧面的它是一个规则正多边形,这里radius就是这个多边形中心到其边垂直距离,也是内切圆半径,所有的item拼成了一个正多边形,示例如下...对于angle属性,它是每一个itemx轴旋转度数,如果我们将所有item中心都放在一点,通过旋转让它们散开如下图所示: ? 每个item旋转弧度就是其索引/(2*pi)。...我们可以直接在ViewController中实现其代理方法,如下: -(void)scrollViewDidScroll:(UIScrollView *)scrollView{     //小于半屏 放到最后一屏多半屏...<200) {         scrollView.contentOffset = CGPointMake(0, scrollView.contentOffset.y+10*400);     //大于最后一屏多一屏...,上面的逻辑刚好可以无缝对接,但是会有新问题,一开始运行,滚轮就是出现在最后一个item位置,而不是第一个,并且有些相关地方,我们也需要一些适配: 在viewController中: //一开始将

1.4K20

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

如果我们要实现要求高一点定制化布局,它就没法满足实际要求了,那我们能否实现自定义布局方案呢!...自定义布局 日常开发中,我们使用 UICollectionView 控件都会搭配一个默认,提供一些基础布局 UICollectionViewFlowLayout 来使用,但是当我们需要实现定制化程度比较高界面时....声明一个变量表示布局中列数量:cols3.声明一个数组变量用于缓存计算好布局属性:[UICollectionViewLayoutAttributes]4.声明一个数组变量用于存放每列高度:[CGFloat...位置信息赋值,最后再更新一下每列高度,直到为每一个 Cell 都重新计算了一遍它位置。...: 好了, 利用 UICollectionView 控件与自定义布局实现瀑布流内容到此就结束了,最后附上项目的源码地址: https://github.com/ShenJieSuzhou/SwiftScrollBanner

2.3K30

iOS流水布局UICollectionView简单使用引实现结

本文就介绍纯用代码创建UICollectionView简单示例,效果如下图: 实现 如图所示,视图由一个个方块组成,每个方块中有一张图片以及一个标题文字。...如果熟悉UITableView的话,其实很多地方都是类似的,甚至可以说UITableView是一种特殊UICollectionView,正如正方形是一种特殊矩形一样,UITableView就是一种每行只放一个方块...所以我们创建一个继承自UICollectionViewCell类用来自定义我们cell,代码如下: // CollectionViewCell.h @interface CollectionViewCell...控制器 接着我们来创建UICollectionViewUICollectionView和UITableView相同之处在于它们都是由DataSource填充内容并有Delegate来管理响应,并且都实现了循环利用优化...不同之处在于UICollectionView需要一个布局参数来决定cell是如何布局,默认是流水布局,也就是我们最常见形式,也就是上面图里形式;此外,UICollectionView除了垂直滚动,

1K00

Swift 探索 UICollectionView 之 SupplementaryView 和 Decoration View

UICollectionView 开发系列第五篇,这也是该系列计划写最后一篇啦!...当然,如果苹果开发者团队推出了关于 UICollectionView 技术或者是我在开发中发现了新技术点,我还是会持续更新这个系列,最终目的是我希望通过这个系列文章能把 UICollectionView...如果产品经理给你提了一个需求,要求你要为 UICollectionView section 设置背景, 但当你查阅文档时候,你就会发现 UICollectionView 是无法通过属性设置来为...<numberOfSections { // 2.1 获取这个 section 第一个以及最后一个 item 布局属性 guard let numberOfItems...最后,我们来看下最终效果: 最后 关于 UICollectionView 系列整理,到今天就要短暂划上一个句号了,在写这个系列之前,我对 UICollectionView 想法就是:无非就是比

1.9K10

抛弃UITableView,让所有列表页不再难构建

IGListKit IGListKit是Instagram出一个基于UICollectionView数据驱动UI框架,目前在github上有9k+ star,被充分利用在Instagram App...上,可以访问外国网站同学可以去体验一下,看看Instagram体验,想想如果那些页面让小明用传统方式实现,那将是什么样情况。...ListSectionController 一个 section controller是一个抽象UICollectionViewsectioncontroller对象,指定一个数据对象,它负责配置和管理...第三个:图片展示 九宫格图片展示,用UICollectionView是最简单实现方式。...最后同样操作,在ListStackedSectionController里面再加一个就又ok了。 小明花了一天就重构完了这个页面,并且再也不怕后面产品经理提出奇葩需求了。

1.6K30

ImageView ScaleType 解析

fitEnd:将原图按比例缩放到ImageView高度或者宽度,在ImageView底部显示 fitStart:将原图按比例缩放到ImageView高度或者宽度,在ImageView上部显示...center:不改变原图大小,在原图中心部分显示在ImageView中心,当原图超过ImageView不做显示,裁剪掉。...centerCrop:以原图填满ImageView为目的,如果原图size大于ImageViewsize,与center_inside一样,按比例缩小,居中显示在ImageView上。...centerInside:以原图正常显示为目的,如果原图大小大于ImageViewsize,就按照比例缩小原图宽高,居中显示在ImageView中。...从上面的解析中,我们可以看出: 以FIT_开头4种,它们共同点是都会对图片进行缩放; 以CENTER_开头3种,它们共同点是居中显示,图片中心点会与ImageView中心点重叠; ScaleType.MATRIX

45510

H5活动宣传页通用布局技术解决方案

,结果只会正好合适或超过裁剪,这里就不细说,最后结论就是使用cover。...9:16,当然可能还是有些瑕疵,因为可能会有地址栏或工具栏,所以如果使用top定位,底部不要放一些重要视觉,因为可能会被裁剪掉,而如果是center定位,顶部和底部都不要放重要视觉,还是因为可能会被裁剪掉...这里先根据实际内容分两种情况,第一种是固定宽度内容,内容宽度小于320px;还有一种是内容大于320px甚至是大于360px,所以就需要考虑窄屏时候缩放。...固定宽度内容 先把所有元素放在一个容器中,对这个容器进行垂直居中定位,水平全屏。里面实际元素定位,根据这个容器进行。...,于是又回到了上面的固定宽度 通过计算得到其宽度与视窗宽度百分比,设置该元素宽度为百分比单位,如果内容是img引入图片,高度自动变化,如果是bg图片,高度采用上面的容器宽高比方式来设置,且设置

1.7K50

H5活动宣传页通用布局技术解决方案

,结果只会正好合适或超过裁剪,这里就不细说,最后结论就是使用cover。...9:16,当然可能还是有些瑕疵,因为可能会有地址栏或工具栏,所以如果使用top定位,底部不要放一些重要视觉,因为可能会被裁剪掉,而如果是center定位,顶部和底部都不要放重要视觉,还是因为可能会被裁剪掉...这里先根据实际内容分两种情况,第一种是固定宽度内容,内容宽度小于320px;还有一种是内容大于320px甚至是大于360px,所以就需要考虑窄屏时候缩放。...固定宽度内容 先把所有元素放在一个容器中,对这个容器进行垂直居中定位,水平全屏。里面实际元素定位,根据这个容器进行。...,于是又回到了上面的固定宽度 通过计算得到其宽度与视窗宽度百分比,设置该元素宽度为百分比单位,如果内容是img引入图片,高度自动变化,如果是bg图片,高度采用上面的容器宽高比方式来设置,且设置

1.3K10

H5活动宣传页通用布局技术解决方案

,结果只会正好合适或超过裁剪,这里就不细说,最后结论就是使用cover。...9:16,当然可能还是有些瑕疵,因为可能会有地址栏或工具栏,所以如果使用top定位,底部不要放一些重要视觉,因为可能会被裁剪掉,而如果是center定位,顶部和底部都不要放重要视觉,还是因为可能会被裁剪掉...这里先根据实际内容分两种情况,第一种是固定宽度内容,内容宽度小于320px;还有一种是内容大于320px甚至是大于360px,所以就需要考虑窄屏时候缩放。...固定宽度内容 先把所有元素放在一个容器中,对这个容器进行垂直居中定位,水平全屏。里面实际元素定位,根据这个容器进行。...,于是又回到了上面的固定宽度 通过计算得到其宽度与视窗宽度百分比,设置该元素宽度为百分比单位,如果内容是img引入图片,高度自动变化,如果是bg图片,高度采用上面的容器宽高比方式来设置,且设置

1.4K42
领券