Files
OrderScheduling/Pods/TYCyclePagerView/TYCyclePagerViewDemo/TYCyclePagerView/TYCyclePagerView.h
T
2025-03-13 15:09:17 +08:00

181 lines
4.8 KiB
Objective-C
Executable File

//
// TYCyclePagerView.h
// TYCyclePagerViewDemo
//
// Created by tany on 2017/6/14.
// Copyright © 2017年 tany. All rights reserved.
//
#import <UIKit/UIKit.h>
#import "TYCyclePagerTransformLayout.h"
NS_ASSUME_NONNULL_BEGIN
typedef struct {
NSInteger index;
NSInteger section;
}TYIndexSection;
// pagerView scrolling direction
typedef NS_ENUM(NSUInteger, TYPagerScrollDirection) {
TYPagerScrollDirectionLeft,
TYPagerScrollDirectionRight,
};
@class TYCyclePagerView;
@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;
@end
@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;
- (void)pagerView:(TYCyclePagerView *)pageView didSelectedItemCell:(__kindof UICollectionViewCell *)cell atIndexSection:(TYIndexSection)indexSection;
// custom layout
- (void)pagerView:(TYCyclePagerView *)pageView initializeTransformAttributes:(UICollectionViewLayoutAttributes *)attributes;
- (void)pagerView:(TYCyclePagerView *)pageView applyTransformToAttributes:(UICollectionViewLayoutAttributes *)attributes;
// scrollViewDelegate
- (void)pagerViewDidScroll:(TYCyclePagerView *)pageView;
- (void)pagerViewWillBeginDragging:(TYCyclePagerView *)pageView;
- (void)pagerViewDidEndDragging:(TYCyclePagerView *)pageView willDecelerate:(BOOL)decelerate;
- (void)pagerViewWillBeginDecelerating:(TYCyclePagerView *)pageView;
- (void)pagerViewDidEndDecelerating:(TYCyclePagerView *)pageView;
- (void)pagerViewWillBeginScrollingAnimation:(TYCyclePagerView *)pageView;
- (void)pagerViewDidEndScrollingAnimation:(TYCyclePagerView *)pageView;
@end
@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, don't set dataSource and delegate
@property (nonatomic, weak, readonly) UICollectionView *collectionView;
// pager view layout
@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;
@property (nonatomic, assign) BOOL reloadDataNeedResetIndex;
/**
current page index
*/
@property (nonatomic, assign, readonly) NSInteger curIndex;
@property (nonatomic, assign, readonly) TYIndexSection indexSection;
// scrollView property
@property (nonatomic, assign, readonly) CGPoint contentOffset;
@property (nonatomic, assign, readonly) BOOL tracking;
@property (nonatomic, assign, readonly) BOOL dragging;
@property (nonatomic, assign, readonly) BOOL decelerating;
/**
reload data, !!important!!: will clear layout and call delegate layoutForPagerView
*/
- (void)reloadData;
/**
update data is reload data, but not clear layuot
*/
- (void)updateData;
/**
if you only want update layout
*/
- (void)setNeedUpdateLayout;
/**
will set layout nil and call delegate->layoutForPagerView
*/
- (void)setNeedClearLayout;
/**
current index cell in pagerView
*/
- (__kindof UICollectionViewCell * _Nullable)curIndexCell;
/**
visible cells in pageView
*/
- (NSArray<__kindof UICollectionViewCell *> *_Nullable)visibleCells;
/**
visible pageView indexs, maybe repeat index
*/
- (NSArray *)visibleIndexs;
/**
scroll to item at index
*/
- (void)scrollToItemAtIndex:(NSInteger)index animate:(BOOL)animate;
- (void)scrollToItemAtIndexSection:(TYIndexSection)indexSection animate:(BOOL)animate;
/**
scroll to next or pre item
*/
- (void)scrollToNearlyIndexAtDirection:(TYPagerScrollDirection)direction animate:(BOOL)animate;
/**
register pager view cell with class
*/
- (void)registerClass:(Class)Class forCellWithReuseIdentifier:(NSString *)identifier;
/**
register pager view cell with nib
*/
- (void)registerNib:(UINib *)nib forCellWithReuseIdentifier:(NSString *)identifier;
/**
dequeue reusable cell for pagerView
*/
- (__kindof UICollectionViewCell *)dequeueReusableCellWithReuseIdentifier:(NSString *)identifier forIndex:(NSInteger)index;
@end
NS_ASSUME_NONNULL_END