ZYBannerView
- 简单易用的轮播控件, 基于 UICollectionView 实现.

Features
- [x] 显示的内容可高度自定义
- [x] 可配置循环滚动效果
- [x] 可配置是否自动滚动, 以及自动滚动时间间隔
- [x] 显示\隐藏 Footer
- [x] 自定义 PageControl 属性
- [x] 支持在 Storyboard\xib 中创建并配置其属性
- [x] 支持 Autolayout
Usage
Basic Usage
只需简单的 2 步即可快速集成此控件
1.创建 Banner 并设置数据源
self.banner = [[ZYBannerView alloc] initWithFrame:CGRectMake(0, 0, 200, 100)];
self.banner.dataSource = self;
[self.view addSubview:self.banner];
2.实现数据源方法
// 返回 Banner 需要显示 Item(View)的个数
- (NSInteger)numberOfItemsInBanner:(ZYBannerView *)banner
{
return 3;
}
// 返回 Banner 在不同的 index 所要显示的 View
- (UIView *)banner:(ZYBannerView *)banner viewForItemAtIndex:(NSInteger)index
{
UIImageView *imageView = [[UIImageView alloc] initWithImage:[UIImage imageNamed:@"xxx"]];
return imageView;
}
Advanced Usage
各种属性与方法的介绍
Property
- 是否需要循环滚动, 默认为
NO
@property (nonatomic, assign) IBInspectable BOOL shouldLoop;
- 是否显示 Footer, 默认为
NO(此属性为YES时,shouldLoop属性会被置为NO)
@property (nonatomic, assign) IBInspectable BOOL showFooter;
- 是否自动滑动, 默认为
NO
@property (nonatomic, assign) IBInspectable BOOL autoScroll;
- 自动滑动间隔时间(s), 默认为 3.0
@property (nonatomic, assign) IBInspectable NSTimeInterval scrollInterval;
- Banner 上显示的 PageControl, 可自由配置其属性, 例如
pageIndicatorTintColor,currentPageIndicatorTintColor
@property (nonatomic, strong, readonly) UIPageControl *pageControl;
- 根据需要设置 PageControl 的 frame, 若不设置或者设置为 CGRectZero, 则使用默认位置
@property (nonatomic, assign, readwrite) CGRect pageControlFrame;
- 数据源与代理
@property (nonatomic, weak) IBOutlet id<ZYBannerViewDataSource> dataSource;
@property (nonatomic, weak) IBOutlet id<ZYBannerViewDelegate> delegate;
NOTE :
shouldLoop,showFooter,autoScroll,scrollInterval,dataSource,delegate均可支持在 Storyboard\xib 中直接设置
Method
- 刷新 Banner 的数据
- (void)reloadData;
- 开始 /停止用于自动滚动的定时器. 比如可以在
viewWillAppear:和viewWillDisappear:中分别调用这两个方法, 使得 Banner 没有显示的时候定时器不会一直占用着资源.
- (void)startTimer;
- (void)stopTimer;
DataSource
- 返回 Banner 需要显示 Item(View)的个数 [ required ]
- (NSInteger)numberOfItemsInBanner:(ZYBannerView *)banner;
- 返回 Banner 在不同的
index所要显示的 View. 这个 View 可以是简单的一个 UIImageView, 也可以是自定义的一个复杂的 View. View 的大小自动布局为 Banner 的大小, 无需对此 View 设置frame[ required ]
- (UIView *)banner:(ZYBannerView *)banner viewForItemAtIndex:(NSInteger)index;
- 返回 Footer 在不同状态下(
ZYBannerFooterStateIdle正常状态 \ZYBannerFooterStateTrigger触发状态)显示的文字 [ optional ]
- (NSString *)banner:(ZYBannerView *)banner titleForFooterWithState:(ZYBannerFooterState)footerState;
Delegate
- 当用户点击了第
index个 Item 时, 此代理方法将被调用 [ optional ]
- (void)banner:(ZYBannerView *)banner didSelectItemAtIndex:(NSInteger)index;
- 当用户拖动 Footer 并达到触发点时, 此代理方法将被调用 [ optional ]
- (void)bannerFooterDidTrigger:(ZYBannerView *)banner;
Requirements
- iOS 7.0+
- Xcode 5.0+
Installation
1.使用 CocoaPods:
pod 'ZYBannerView'
2.手动添加:
- 将 ZYBannerView 文件夹中拖拽到项目中
- 导入头文件:
#import "ZYBannerView.h"
License
ZYBannerView is released under the MIT license. See LICENSE for details.