Latest 1.1.2
Homepage https://github.com/12207480/TYCyclePagerView
License MIT
Platforms ios 7.0, requires ARC
Authors

a simple and usefull cycle pager view ,and auto scroll banner view ,include pageControl for iOS,support Objective-C and swift.this has been used in APP.

CocoaPods

pod 'TYCyclePagerView'

Requirements

  • Xcode 8 or higher
  • iOS 7.0 or higher
  • ARC

ScreenShot

image

API

  • DataSource and Delegate

@protocol TYCyclePagerViewDataSource

  • (NSInteger)numberOfItemsInPagerView:(TYCyclePagerView *)pageView;

  • (__kindof UICollectionViewCell )pagerView:(TYCyclePagerView )pagerView cellForItemAtIndex:(NSInteger)index;

/*
return pagerView layout,and cache layout
/

  • (TYCyclePagerViewLayout )layoutForPagerView:(TYCyclePagerView )pageView;

@protocol TYCyclePagerViewDelegate

@optional

/*
pagerView did scroll to new index page
/

  • (void)pagerView:(TYCyclePagerView *)pageView didScrollFromIndex:(NSInteger)fromIndex toIndex:(NSInteger)toIndex;

/*
pagerView did selected item cell
/

  • (void)pagerView:(TYCyclePagerView )pageView didSelectedItemCell:(__kindof UICollectionViewCell )cell atIndex:(NSInteger)index;

// More API see project


* Class

```objc

@interface TYCyclePagerView : UIView

// will be automatically resized to track the size of the pagerView
@property (nonatomic, strong, nullable) UIView *backgroundView; 

@property (nonatomic, weak, nullable) id<TYCyclePagerViewDataSource> dataSource;
@property (nonatomic, weak, nullable) id<TYCyclePagerViewDelegate> delegate;

// pager view layout is important
@property (nonatomic, strong, readonly) TYCyclePagerViewLayout *layout;

/**
 is infinite cycle pageview
 */
@property (nonatomic, assign) BOOL isInfiniteLoop;

/**
 pagerView automatic scroll time interval, default 0,disable automatic
 */
@property (nonatomic, assign) CGFloat autoScrollInterval;

@interface TYCyclePagerViewLayout : NSObject

@property (nonatomic, assign) CGSize itemSize;
@property (nonatomic, assign) CGFloat itemSpacing;
@property (nonatomic, assign) UIEdgeInsets sectionInset;

@property (nonatomic, assign) TYCyclePagerTransformLayoutType layoutType;

@property (nonatomic, assign) CGFloat minimumScale; // sacle default 0.8
@property (nonatomic, assign) CGFloat minimumAlpha; // alpha default 1.0
@property (nonatomic, assign) CGFloat maximumAngle; // angle is % default 0.2

@interface TYPageControl : UIControl

@property (nonatomic, assign) NSInteger numberOfPages;          // default is 0
@property (nonatomic, assign) NSInteger currentPage;            // default is 0. value pinned to 0..numberOfPages-1

// indicatorTint color
@property (nullable, nonatomic,strong) UIColor *pageIndicatorTintColor;
@property (nullable, nonatomic,strong) UIColor *currentPageIndicatorTintColor;

// indicator image
@property (nullable, nonatomic,strong) UIImage *pageIndicatorImage;
@property (nullable, nonatomic,strong) UIImage *currentPageIndicatorImage;

Usage


- (void)addPagerView {
    TYCyclePagerView *pagerView = [[TYCyclePagerView alloc]init];
    pagerView.layer.borderWidth = 1;
    pagerView.isInfiniteLoop = YES;
    pagerView.autoScrollInterval = 3.0;
    pagerView.dataSource = self;
    pagerView.delegate = self;
    // registerClass or registerNib
    [pagerView registerClass:[TYCyclePagerViewCell class] forCellWithReuseIdentifier:@"cellId"];
    [self.view addSubview:pagerView];
    _pagerView = pagerView;
}

- (void)addPageControl {
    TYPageControl *pageControl = [[TYPageControl alloc]init];
    //pageControl.numberOfPages = _datas.count;
    pageControl.currentPageIndicatorSize = CGSizeMake(8, 8);
//    pageControl.pageIndicatorImage = [UIImage imageNamed:@"Dot"];
//    pageControl.currentPageIndicatorImage = [UIImage imageNamed:@"DotSelected"];
//    [pageControl addTarget:self action:@selector(pageControlValueChangeAction:) forControlEvents:UIControlEventValueChanged];
    [_pagerView addSubview:pageControl];
    _pageControl = pageControl;
}
- (void)loadData {
    // load data to _datas
    _pageControl.numberOfPages = _datas.count;
    [_pagerView reloadData];
}

Contact

如果你发现bug,please pull reqeust me
如果你有更好的改进,please pull reqeust me

Latest podspec

{
    "name": "TYCyclePagerView",
    "version": "1.1.2",
    "summary": "a simple and usefull cycle pager view ,and auto scroll banner view,include pageControl for iOS,support Objective-C and swift",
    "homepage": "https://github.com/12207480/TYCyclePagerView",
    "license": {
        "type": "MIT",
        "file": "LICENSE"
    },
    "authors": {
        "tany": "[email protected]"
    },
    "platforms": {
        "ios": "7.0"
    },
    "source": {
        "git": "https://github.com/12207480/TYCyclePagerView.git",
        "tag": "1.1.2"
    },
    "source_files": "TYCyclePagerViewDemo/TYCyclePagerView/**/*.{h,m}",
    "requires_arc": true
}

Pin It on Pinterest

Share This