# TYCyclePagerView 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](https://github.com/12207480/TYCyclePagerView/blob/master/ScreenShot/TYCyclePagerView.gif) ## API * DataSource and Delegate ```objc @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 dataSource; @property (nonatomic, weak, nullable) id 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 ```objc - (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