142 lines
4.2 KiB
Markdown
Executable File
142 lines
4.2 KiB
Markdown
Executable File
# 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
|
||
|
||

|
||
|
||
## API
|
||
|
||
* DataSource and Delegate
|
||
```objc
|
||
|
||
@protocol TYCyclePagerViewDataSource <NSObject>
|
||
|
||
- (NSInteger)numberOfItemsInPagerView:(TYCyclePagerView *)pageView;
|
||
|
||
- (__kindof UICollectionViewCell *)pagerView:(TYCyclePagerView *)pagerView cellForItemAtIndex:(NSInteger)index;
|
||
|
||
/**
|
||
return pagerView layout,and cache layout
|
||
*/
|
||
- (TYCyclePagerViewLayout *)layoutForPagerView:(TYCyclePagerView *)pageView;
|
||
|
||
@protocol TYCyclePagerViewDelegate <NSObject>
|
||
|
||
@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
|
||
|
||
```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 <br>
|
||
如果你有更好的改进,please pull reqeust me <br>
|