Skip to content
简单易用, 显示内容定制性强的可循环轮播控件. 可以实现类似淘宝商品详情中侧拉进入详情页的功能.
Branch: master
Clone or download
Permalink
Type Name Latest commit message Commit time
Failed to load latest commit information.
ZYBannerView 修复除零crash Jul 28, 2017
ZYBannerViewDemo.xcodeproj Make 'currentIndex' settable. Jun 19, 2017
ZYBannerViewDemo Add delegate for current index change Jun 7, 2017
ZYBannerViewDemoTests Initial Commit Nov 25, 2015
.gitignore Updated podspec Aug 31, 2016
LICENSE Initial commit Dec 3, 2015
README.md Update README.md May 1, 2017
ZYBannerView.podspec Update podspec Jun 19, 2017

README.md

CocoaPods  CocoaPods  Support 

ZYBannerView

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

Features

  • 显示的内容可高度自定义
  • 可配置循环滚动效果
  • 可配置是否自动滚动, 以及自动滚动时间间隔
  • 显示\隐藏Footer
  • 自定义PageControl属性
  • 支持在Storyboard\xib中创建并配置其属性
  • 支持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.

ZYBannerView in C#

Looking to incorporate ZYBannerView into your project in Xamarin? Check out ZYBannerView_Xamarin (thanks to jingliancui).

You can’t perform that action at this time.