HPKJBannerView 1.3.0

HPKJBannerView 1.3.0

测试已测试
语言语言 Obj-CObjective C
许可证 MIT
发布最新版本2017年11月

Zhangweifan 维护。



  • 作者:
  • zy_zhang

CocoaPods 
CocoaPods 
Support 

ZYBannerView

  • 简单易用的轮播控件,基于 UICollectionView 实现。

功能

  • 显示的内容可高度自定义
  • 可配置循环滚动效果
  • 可配置是否自动滚动,以及自动滚动时间间隔
  • 显示/隐藏 Footer
  • 自定义 PageControl 属性
  • 支持在 Storyboard/xib 中创建并配置其属性
  • 支持 Autolayout

使用方法

基本用法

只需简单的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;
}

高级用法

各种属性与方法的介绍

属性

  • 是否需要循环滚动,默认为 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;

注意: shouldLoop, showFooter, autoScroll, scrollInterval, dataSource, delegate 均可支持在 Storyboard/xib 中直接设置

方法

  • 刷新 Banner 的数据
- (void)reloadData;
  • 开始/停止用于自动滚动的定时器。 比如可以在 viewWillAppear: 和 viewWillDisappear: 中分别调用这两个方法, 使得 Banner 没有显示的时候定时器不会一直占用着资源。
- (void)startTimer;
- (void)stopTimer;

数据源

  • 返回 Banner 需要显示 Item(View) 的个数 【必需】
- (NSInteger)numberOfItemsInBanner:(ZYBannerView *)banner;
  • 返回 Banner 在不同的 index 要显示的 View。 这个 View 可以是简单的一个 UIImageView, 也可以是自定义的一个复杂的 View。 View 的大小自动布局为 Banner 的大小,无需对此 View 设置 frame 【必需】
- (UIView *)banner:(ZYBannerView *)banner viewForItemAtIndex:(NSInteger)index;
  • 返回 Footer 在不同状态下(ZYBannerFooterStateIdle 正常状态 \ ZYBannerFooterStateTrigger 触发状态)显示的文字 【可选】
- (NSString *)banner:(ZYBannerView *)banner titleForFooterWithState:(ZYBannerFooterState)footerState;

代理

  • 当用户点击了第 index 个 Item 时, 此代理方法将被调用 【可选】
- (void)banner:(ZYBannerView *)banner didSelectItemAtIndex:(NSInteger)index;
  • 当用户拖动 Footer 并达到触发点时, 此代理方法将被调用【可选】
- (void)bannerFooterDidTrigger:(ZYBannerView *)banner;

需求

  • iOS 7.0+
  • Xcode 5.0+

安装

1.使用 CocoaPods

pod 'ZYBannerView'

2.手动添加

  • 将 ZYBannerView 文件夹中拖拽到项目中
  • 导入头文件:#import "ZYBannerView.h"

许可证

ZYBannerView 采用 MIT 许可证发布。详情见 LICENSE。