iOS 轮播视图 DMLoopingView

话不多说,先上效果图吧:


DMLoopingView

这是一个参考系统UITableView写的轮播小控件。在DMLoopingView中,数据源和代理方法如下:

@protocol DMLoopingViewDataSource 

@required
/**
 返回 cell 数量

 @param  loopingView   self
 @return Integer       cell 数量
*/
- (NSInteger)numberOfItemsInLoopingView:(DMLoopingView *)loopingView;

/**
 返回 loopingViewCell

 @param  loopingView      self
 @param  index            cell的序列
 @return loopingViewcell  cell
*/
- (DMLoopingViewCell *)loopingView:(DMLoopingView *)loopingView itemForRowAtIndex:(NSInteger)index;

@optional
/**
 返回 loopingView 刷新间隔,如果不实现此方法 默认刷新间隔 4s

 @param  loopingView   self
 @return timeInterval  时间间隔
*/
- (NSTimeInterval)timeIntervalForloopingView:(DMLoopingView *)loopingView;

/**
 返回 loopingView 动画执行时间,如果不实现此方法 默认执行时间0.5s

 @param  loopingView   self
 @return timeInterval  执行时间
*/
- (NSTimeInterval)timeAnimationExecuteForloopingView:(DMLoopingView *)loopingView;

@end

@protocol DMLoopingViewDelegate 

@optional
- (void)loopingView:(DMLoopingView *)loopingView didSelectRowAtIndexPath:(NSInteger)index;

@end

实例化DMLoopingView时,需要注册cell 在获取cell代理中可以使用dequeue方法获取重用cell,有效提高性能。每当数据源变更,使用reload方法刷新整个loopingView,方法定义如下:

/**
 注册cell
 
 @param  cellClass      cell类
 @param  identifier     重用标识符
 */
- (void)registerClass:(nullable Class)cellClass forCellReuseIdentifier:(NSString *)identifier;

/**
 获取重用cell

 @param  identifier     重用标识符
 @return loopingViewCell
*/
- (__kindof DMLoopingViewCell *)dequeueReusableCellWithReuseIdentifier:(NSString *)identifier;
                                
/**
 刷新数据
*/
- (void)reloadDataAndLooping;

在退出页面时,一定要调用stop方法销毁定时器,否则会造成内存泄漏。

/**
 销毁loopingView 释放timer
*/
- (void)stop;

我在github上传了集成DMLoopingView的demo,如果需要自定义cell,需要继承自DMLoopingViewCell 同UITableView使用。demo中都有详尽的实现。本来打算在初始化中声明-initWithStyle 搞几个不同样式,可能包含横屏轮播竖屏轮播,不过本来就是轻量的信息条轮播,就不搞这么复杂了,后续可以自己实现。

Demo点我

你可能感兴趣的:(iOS 轮播视图 DMLoopingView)