SXCycleView 1.3.0

SXCycleView 1.3.0

测试已测试
语言语言 Obj-CObjective C
许可 MIT
发布上次发布2017年8月

xiaoR 维护。



  • 来自
  • iShown

SXCycleView 轮播图

####博客文章地址https://my.oschina.net/bieshixuan/blog/789622

##!!!由于苹果CollectionView回收机制更改,因此改用了ScrollView,更快速且更节省内存!!!

###!!!a. 使用pod导入应用库时可能会出现一些使用问题,可以到SXCycleView文件夹下的文件加入工程即可,注意工程用到了SDWebImage

###b. 引入头文件 import SXCycleView.h

//最新版本改为类方法
[SXCycleView initWithFrame:CGRectMake(10, 200, 300, 200)
              imageUrlArrs:@[  ]
                    titles:@[  ]
                clickBlock:^(NSInteger currentIndex) {
                    NSLog(@"%ld", currentIndex);
                }]];

有任何问题欢迎留言

轮播图

使用collectionView可以很方便地创建轮播图,并且利用collectionViewCell的复用,很方便地管理,原理也很简单。

a,把轮播图的元数据设为大,例如:123123123...123123123

b,创建视图,并将初始位置设置为中间点

c,处理滚动到头的情况

##.自己的想法和优雅的点子

####想法1,数据源的读取并不优雅

数据源是一个明显的双向循环,这个结构与以前“听说”的双向链表非常契合,为什么不使用双向链表作为数据源呢?

####想法2,将collection设置为99999整数值,表示我是一个崇尚优雅的猿。

本来就是轮播嘛,滑动的时候怎能左右划过,总不可能需要超过3个的cell吧?

##Then-> 假如我有一个链表,而且我只使用3个cell,那么我可以写成一个循环滚动的轮播图吗?

###原理应该是每次滑动完成后都回到中间的那张图片。

左滑3个cell的数据源整体向左,右滑同理。

interface

@property (nonatomic, assign) BOOL autoScroll;                //是否自动滚动,默认Yes
@property (nonatomic, assign) CGFloat autoScrollTimeInterval; //自动滚动间隔时间,默认5s

/**
 开放的 pageControl
 ! 可以set一个新的pageControl以替换
 ! 亦可简单重设frame
 ! 设置为nil即不显示
 */
@property (nonatomic, weak) UIPageControl *pageControl;

//image数组初始化
+ (instancetype)initWithFrame:(CGRect)frame imageArrs:(NSArray<UIImage *> *)imageArr clickBlock:(ClickedImageBlock)block;
+ (instancetype)initWithFrame:(CGRect)frame imageArrs:(NSArray<UIImage *> *)imageArr titles:(NSArray *)titleArr clickBlock:(ClickedImageBlock)block;

//url数组初始化
+ (instancetype)initWithFrame:(CGRect)frame imageUrlArrs:(NSArray<NSString *> *)urlArr clickBlock:(ClickedImageBlock)block;
+ (instancetype)initWithFrame:(CGRect)frame imageUrlArrs:(NSArray<NSString *> *)urlArr titles:(NSArray *)titleArr clickBlock:(ClickedImageBlock)block;