个人觉得 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 轮播,实现啦……

总结下,他的实现为什么如此简单

  1. collection view 有个flow layout 设置这个属性就可以让他横向滚动,竖向滚动
  2. 还有一个重点 声明下 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 轮播相关推荐

  1. 关于element-ui中轮播图手动切换轮播图片

    文章目录 前言 一.关于element-ui中轮播图手动切换轮播图片 二.解决方案 1.查看element-ui中Carousel 走马灯组件的方法 2.解决方法 结尾 前言 在开发过程中发现项目中轮 ...

  2. 修改elementUI轮播图鼠标划入轮播暂停的原生效果

    修改elementUI轮播图鼠标划入轮播暂停的原生效果_Boriska1996的博客-CSDN博客_iview carousel 暂停

  3. 京东轮播图——点击轮播

    京东轮播图--点击轮播 完成效果如下 点击左右按钮可以实现图片转化,底下橙色的按钮也随之改变. (图片是在京东上找的,只是觉得比较好看而已) DIV布局 1.整体的一个div容器 2.image布局d ...

  4. JavaScript实现京东轮播图效果——自动轮播,左右按钮切换图片,小圆圈跟随图片变化,点击小圆圈可跳转图片,无缝循环播放

    JavaScript实现京东轮播图效果--自动轮播,左右按钮切换图片,小圆圈跟随图片变化,点击小圆圈可跳转图片,无缝循环播放 静态效果图如下: CSS部分 *{margin: 0;padding: 0 ...

  5. php写后台轮播图,后台管理系统--轮播图管理

    摘要:<?php /** * Created by PhpStorm. * User: Administrator * Date: 2019/5/27 * Time: 23:41 */names ...

  6. jQuery实现轮播图(无缝轮播,附效果图),代码有详解。

    jQuery实现轮播图 这里用了一些有颜色的div块当做图片,复制之后可以直接用,有需要的话再根据自己的需求替换就可以了. 功能: (1)左右无缝轮播. (2)鼠标移上去会停止,移走继续动. (3)点 ...

  7. jquery手写轮播图_jquery 实现轮播图详解及实例代码_jquery_脚本之家

    轮播图: 接触jquery也有一段时间了,今天刚好利用轮播图来练练手.博文的前面会介绍一个简单用jquery做轮播图的例子,中间会插入一些关于轮播图更多的思考,在后面会用Javascript的方法来写 ...

  8. 轮播图展示与轮播图管理

    展示 复制文章展示后台,改请求. 新增修改轮播图 上传文件前提 上传准备工作 1.表单必须是post提交 2.表单设置enctype类型 3.在springmvc必须设置上传解析器 具体实现工作和Fr ...

  9. FlyBanner轮播图 和 XBanner轮播图

    FlyBanner轮播图 1.添加依赖 compile 'com.recker.flybanner:flybanner:1.3' 2.XML布局 <com.recker.flybanner.Fl ...

  10. 轮播图 (无缝轮播图)

    1.无缝轮播核心: 在最后多加一张第一张图, 当达到最后一张t1的时候 一瞬间将ul拉回到0的位置 结构: <div class="wrap"><ul>&l ...

最新文章

  1. 你还有学了三年建模的朋友吗?他有救了
  2. Alan Kay等专家领衔,北京智源大会6月24日精彩预告
  3. 将excel的数据导入到mysql数据表
  4. 再说 Spring AOP
  5. ITK:查找图像的更高导数
  6. 微信新功能又来了,这些功能再次打开了我新世界的大门!
  7. 不能断点调试python_为Python调试构建一个不间断的断点
  8. 9大门类,99个系列课程,几乎所有AI免费课程都在这里啦
  9. android点击改变字体颜色,Android Textview 动态 部分文字点击 改变颜色
  10. 20194307肖江宇Exp-4 恶意代码分析
  11. 波士顿大学 计算机专业,波士顿大学本科计算机专业课程设置是怎样的?
  12. 用Python蹭别人家图片接口,做一个【免费图床】吧
  13. STM32cubeide代码自动补全教程
  14. 直角坐标系(Cartesian或Rectangular coordinate system)
  15. HDU:1998 奇数阶魔方(规律填数)
  16. 4.输入10个字符,统计里面大写英文的个数
  17. 解决双屏同时只能一个工作,另一个黑屏问题
  18. 美国的互联网上网费现状
  19. You have enabled checking of packages via GPG keys. This is a good thing.  However, you do not have
  20. 复盘(一) 【一个身家10亿的国企前辈,送给年轻人的三点成长建议 】

热门文章

  1. 如何保证MongoDB的安全性? 1
  2. JVM(一)史上最佳入门指南
  3. [译] 论 Rust 和 WebAssembly 对源码地址索引的极限优化
  4. LNMP环境添加第三方模块
  5. 独家 | 一文读懂自然语言处理NLP(附学习资料)
  6. 吃饭、睡觉、打星星之“打星星”!
  7. 解决 windows10和ubuntu16.04双系统下时间不对的问题
  8. c# 读取记事本txt文档到DataTable中
  9. 低学历者为何能骗取30万年薪职位
  10. 大恶人吉日嘎拉之走火入魔闭门造车之.NET疯狂架构经验分享系列之(十二)多语言支持...