01.轮播图之三 : collectionView 轮播
个人觉得 collection view 做轮播是最方便的,设置下flowlayout 其他不会有很大的变动,没有什么逻辑的代码
let's begin……
创建自定义的view
.h 声明文件
@interface CollectionViewShuffling : UIView@property (nonatomic,strong)NSArray *array;@end
.m 实现文件
@interface CollectionViewShuffling ()<UICollectionViewDelegate, UICollectionViewDataSource>@property (nonatomic,strong)UICollectionView *collectionView; @property (nonatomic,strong)NSMutableArray *collectionArray;@end@implementation CollectionViewShuffling @synthesize array = _array;-(instancetype)initWithFrame:(CGRect)frame{if (self == [super initWithFrame:frame]) {}return self; } /**这个是横向滚动轮播的重点研究对象*/ -( UICollectionViewFlowLayout *)creatFlowLayout{// 创建UICollectionViewFlowLayout约束对象UICollectionViewFlowLayout *flowLayout = [[UICollectionViewFlowLayout alloc] init];// 设置item的Size大小flowLayout.itemSize = CGSizeMake(self.frame.size.width, self.frame.size.height);// 设置uicollection 的 横向滑动flowLayout.scrollDirection = UICollectionViewScrollDirectionHorizontal;flowLayout.minimumLineSpacing = 0;return flowLayout; }- (UICollectionView *)collectionView {if (!_collectionView) {UICollectionViewFlowLayout *flowLayout = [self creatFlowLayout];_collectionView = [[UICollectionView alloc] initWithFrame:CGRectMake(0, 0, self.frame.size.width, self.frame.size.height) collectionViewLayout:flowLayout];[self addSubview:_collectionView];// 设置代理_collectionView.delegate = self;_collectionView.dataSource = self; // _collectionView.showsHorizontalScrollIndicator = NO;// 设置不展示滑动条_collectionView.pagingEnabled = YES; // 设置整页滑动// 设置当前collectionView 到哪个位置(indexPath row 0 section 取中间(50个)) [_collectionView registerNib:[UINib nibWithNibName:@"ShufflingItem" bundle:nil] forCellWithReuseIdentifier:@"ShufflingItem"];}return _collectionView; }-(void)setArray:(NSArray *)array{NSAssert(array.count != 0, @"传入的滚动数组是 空的");_array = array;[self prepareData];[self prepareUI]; }-(void)prepareUI{[self.collectionView scrollToItemAtIndexPath:[NSIndexPath indexPathForItem:1 inSection:0] atScrollPosition:UICollectionViewScrollPositionLeft animated:false];[self.collectionView reloadData]; }- (void)prepareData{self.collectionArray = [NSMutableArray new];// 首位 添加数组最后的元素 [self.collectionArray addObject:_array.lastObject];// 添加数组元素 [self.collectionArray addObjectsFromArray:_array];// 末尾 补充第一个元素 [self.collectionArray addObject:_array.firstObject]; } /*collection view delegate*/ - (NSInteger)numberOfSectionsInCollectionView:(UICollectionView *)collectionView {return 1; } - (NSInteger)collectionView:(UICollectionView *)collectionView numberOfItemsInSection:(NSInteger)section {return self.collectionArray.count; }- (UICollectionViewCell *)collectionView:(UICollectionView *)collectionView cellForItemAtIndexPath:(NSIndexPath *)indexPath {ShufflingItem *item = [collectionView dequeueReusableCellWithReuseIdentifier:@"ShufflingItem" forIndexPath:indexPath];if (!item) {item = [[ShufflingItem alloc] init];}item.imageView.backgroundColor = self.collectionArray[indexPath.row];return item; }-(void)scrollViewDidScroll:(UIScrollView *)scrollView{if (scrollView == self.collectionView) {NSLog(@"scroll content %@",NSStringFromCGPoint(scrollView.contentOffset));//检测移动的位移if (scrollView.contentOffset.x == (self.collectionArray.count-1)*(self.frame.size.width) ) {[self.collectionView scrollToItemAtIndexPath:[NSIndexPath indexPathForItem:1 inSection:0] atScrollPosition:UICollectionViewScrollPositionLeft animated:false];}else if (scrollView.contentOffset.x == 0){[self.collectionView scrollToItemAtIndexPath:[NSIndexPath indexPathForItem:(self.collectionArray.count-2) inSection:0] atScrollPosition:UICollectionViewScrollPositionLeft animated:false];}else{// 正常滚动 }} }
最简单的collection 轮播,实现啦……
总结下,他的实现为什么如此简单
- collection view 有个flow layout 设置这个属性就可以让他横向滚动,竖向滚动
- 还有一个重点 声明下 collection view 使用 item cell 的时候,是必须注册的
调用方法::::
-(void)prepareCollectShuffling{CollectionViewShuffling *collectShuffling = [[CollectionViewShuffling alloc]initWithFrame:CGRectMake(10, 320, self.view.frame.size.width -20, 220)];[self.view addSubview:collectShuffling];;collectShuffling.array = self.arr; }
这个写完,距离成功又进了一步,继续………………
转载于:https://www.cnblogs.com/Bob-blogs/p/6773070.html
01.轮播图之三 : collectionView 轮播相关推荐
- 关于element-ui中轮播图手动切换轮播图片
文章目录 前言 一.关于element-ui中轮播图手动切换轮播图片 二.解决方案 1.查看element-ui中Carousel 走马灯组件的方法 2.解决方法 结尾 前言 在开发过程中发现项目中轮 ...
- 修改elementUI轮播图鼠标划入轮播暂停的原生效果
修改elementUI轮播图鼠标划入轮播暂停的原生效果_Boriska1996的博客-CSDN博客_iview carousel 暂停
- 京东轮播图——点击轮播
京东轮播图--点击轮播 完成效果如下 点击左右按钮可以实现图片转化,底下橙色的按钮也随之改变. (图片是在京东上找的,只是觉得比较好看而已) DIV布局 1.整体的一个div容器 2.image布局d ...
- JavaScript实现京东轮播图效果——自动轮播,左右按钮切换图片,小圆圈跟随图片变化,点击小圆圈可跳转图片,无缝循环播放
JavaScript实现京东轮播图效果--自动轮播,左右按钮切换图片,小圆圈跟随图片变化,点击小圆圈可跳转图片,无缝循环播放 静态效果图如下: CSS部分 *{margin: 0;padding: 0 ...
- php写后台轮播图,后台管理系统--轮播图管理
摘要:<?php /** * Created by PhpStorm. * User: Administrator * Date: 2019/5/27 * Time: 23:41 */names ...
- jQuery实现轮播图(无缝轮播,附效果图),代码有详解。
jQuery实现轮播图 这里用了一些有颜色的div块当做图片,复制之后可以直接用,有需要的话再根据自己的需求替换就可以了. 功能: (1)左右无缝轮播. (2)鼠标移上去会停止,移走继续动. (3)点 ...
- jquery手写轮播图_jquery 实现轮播图详解及实例代码_jquery_脚本之家
轮播图: 接触jquery也有一段时间了,今天刚好利用轮播图来练练手.博文的前面会介绍一个简单用jquery做轮播图的例子,中间会插入一些关于轮播图更多的思考,在后面会用Javascript的方法来写 ...
- 轮播图展示与轮播图管理
展示 复制文章展示后台,改请求. 新增修改轮播图 上传文件前提 上传准备工作 1.表单必须是post提交 2.表单设置enctype类型 3.在springmvc必须设置上传解析器 具体实现工作和Fr ...
- FlyBanner轮播图 和 XBanner轮播图
FlyBanner轮播图 1.添加依赖 compile 'com.recker.flybanner:flybanner:1.3' 2.XML布局 <com.recker.flybanner.Fl ...
- 轮播图 (无缝轮播图)
1.无缝轮播核心: 在最后多加一张第一张图, 当达到最后一张t1的时候 一瞬间将ul拉回到0的位置 结构: <div class="wrap"><ul>&l ...
最新文章
- 你还有学了三年建模的朋友吗?他有救了
- Alan Kay等专家领衔,北京智源大会6月24日精彩预告
- 将excel的数据导入到mysql数据表
- 再说 Spring AOP
- ITK:查找图像的更高导数
- 微信新功能又来了,这些功能再次打开了我新世界的大门!
- 不能断点调试python_为Python调试构建一个不间断的断点
- 9大门类,99个系列课程,几乎所有AI免费课程都在这里啦
- android点击改变字体颜色,Android Textview 动态 部分文字点击 改变颜色
- 20194307肖江宇Exp-4 恶意代码分析
- 波士顿大学 计算机专业,波士顿大学本科计算机专业课程设置是怎样的?
- 用Python蹭别人家图片接口,做一个【免费图床】吧
- STM32cubeide代码自动补全教程
- 直角坐标系(Cartesian或Rectangular coordinate system)
- HDU:1998 奇数阶魔方(规律填数)
- 4.输入10个字符,统计里面大写英文的个数
- 解决双屏同时只能一个工作,另一个黑屏问题
- 美国的互联网上网费现状
- You have enabled checking of packages via GPG keys. This is a good thing. However, you do not have
- 复盘(一) 【一个身家10亿的国企前辈,送给年轻人的三点成长建议 】
热门文章
- 如何保证MongoDB的安全性? 1
- JVM(一)史上最佳入门指南
- [译] 论 Rust 和 WebAssembly 对源码地址索引的极限优化
- LNMP环境添加第三方模块
- 独家 | 一文读懂自然语言处理NLP(附学习资料)
- 吃饭、睡觉、打星星之“打星星”!
- 解决 windows10和ubuntu16.04双系统下时间不对的问题
- c# 读取记事本txt文档到DataTable中
- 低学历者为何能骗取30万年薪职位
- 大恶人吉日嘎拉之走火入魔闭门造车之.NET疯狂架构经验分享系列之(十二)多语言支持...