TYPagerController.h 2.8 KB

1234567891011121314151617181920212223242526272829303132333435363738394041424344454647484950515253545556575859606162636465666768697071727374757677787980818283
  1. #import "DMBaseViewController.h"
  2. @class TYPagerController;
  3. @protocol TYPagerControllerDataSource <NSObject>
  4. // viewController count in pagerController
  5. - (NSInteger)numberOfControllersInPagerController;
  6. // viewController at index in pagerController
  7. - (UIViewController *)pagerController:(TYPagerController *)pagerController controllerForIndex:(NSInteger)index;
  8. @optional
  9. // viewController title in pagerController
  10. - (NSString *)pagerController:(TYPagerController *)pagerController titleForIndex:(NSInteger)index;
  11. @end
  12. @protocol TYPagerControllerDelegate <NSObject>
  13. @optional
  14. // transition from index to index with animated
  15. - (void)pagerController:(TYPagerController *)pagerController transitionFromIndex:(NSInteger)fromIndex toIndex:(NSInteger)toIndex animated:(BOOL)animated;
  16. // transition from index to index with progress
  17. - (void)pagerController:(TYPagerController *)pagerController transitionFromIndex:(NSInteger)fromIndex toIndex:(NSInteger)toIndex progress:(CGFloat)progress;
  18. @end
  19. @interface TYPagerController : DMBaseViewController
  20. @property (nonatomic, weak, readonly) UIScrollView *contentView; // don‘t change the frame
  21. @property (nonatomic, weak) id<TYPagerControllerDataSource> dataSource;
  22. @property (nonatomic, weak) id<TYPagerControllerDelegate> delegate;
  23. @property (nonatomic, strong, readonly) NSCache *memoryCache;// cache pagerController, you can set countLimit
  24. @property (nonatomic, assign, readonly) NSInteger countOfControllers;// after viewdidload or reload have value
  25. @property (nonatomic, assign) NSInteger curIndex;
  26. @property (nonatomic, assign, readonly) NSRange visibleRange; // visible index range
  27. @property (nonatomic, assign) CGFloat contentTopEdging; // contentView top edge
  28. @property(nonatomic, assign) CGRect contentVCFrame;
  29. @property (nonatomic, assign) BOOL adjustStatusBarHeight; // defaut NO,if YES and navBar is hide,statusBarHeight have value to adjust status
  30. @property (nonatomic, assign) CGFloat changeIndexWhenScrollProgress; // default 1.0,when scroll progress percent will change index
  31. // reload
  32. - (void)reloadData;
  33. -(void)setContentFrame;
  34. // override must call super , update contentView subviews frame
  35. - (void)updateContentView;
  36. -(void)reSizeContentViewWithFrame:(CGRect)frame;
  37. // move pager controller to index
  38. - (void)moveToControllerAtIndex:(NSInteger)index animated:(BOOL)animated;
  39. // visible pager controllers
  40. - (NSArray *)visibleViewControllers;
  41. // scroll is progressing
  42. - (BOOL)isProgressScrollEnabel;
  43. // see adjustStatusBarHeight ,only layout views ,it is valid.
  44. - (NSInteger)statusBarHeight;
  45. @end
  46. @interface TYPagerController (TransitionOverride)
  47. // subclass override
  48. - (void)transitionFromIndex:(NSInteger)fromIndex toIndex:(NSInteger)toIndex animated:(BOOL)animated;
  49. - (void)transitionFromIndex:(NSInteger)fromIndex toIndex:(NSInteger)toIndex progress:(CGFloat)progress;
  50. @end