前言
最近的項目很多頁面都是UIPageViewController加上segment點擊切換的界面結(jié)構(gòu)。每次都重復(fù)寫覺得真的很麻煩,因此抽出時間封裝了一個NMPageViewController。先來看看效果:
- NMSlipingBlockAnimationGradientmo 模式
NMSlipingBlockAnimationGradientmo模式
- NMSlipingBlockAnimationNomal 模式
NMSlipingBlockAnimationNomal模式
特性
- 生成簡單:初始化方便,一句代碼就能生成pageView、segmentView和delegate。
- 適用性:可以適應(yīng)各種使用環(huán)境,不變形。
- 高性能:正常使用情況下不掉幀。
- 易用:支持修改按鈕各項屬性,修改segment高度,背景view顏色等。
使用
初始化
簡單的初始化方法
/**
* 初始化方法
*
* @param titleArray segment顯示按鈕標(biāo)題數(shù)組
* @param viewControllerArray pageViewController的子視圖控制器
* @param delegate 代理控制器
* @param 父類視圖View
*
* @return NMPageViewController
*/
- (instancetype)initWithTitles:(NSArray *)titleArray viewControllers:(NSArray *)viewControllerArray delegate:(id<NMPageViewControllerDelegate>) delegate parentView:(UIView *)view;
代理方法
@protocol NMPageViewControllerDelegate <NSObject>
@optional
// Sent when a gesture-initiated transition begins.
- (void)pageViewController:(UIPageViewController *)pageViewController willTransitionToViewControllers:(NSArray<UIViewController *> *)pendingViewControllers NS_AVAILABLE_IOS(6_0);
// Sent when a gesture-initiated transition ends. The 'finished' parameter indicates whether the animation finished, while the 'completed' parameter indicates whether the transition completed or bailed out (if the user let go early).
- (void)pageViewController:(UIPageViewController *)pageViewController didFinishAnimating:(BOOL)finished previousViewControllers:(NSArray<UIViewController *> *)previousViewControllers transitionCompleted:(BOOL)completed;
/**
* pageView滑動響應(yīng)
*
* @param scrollView pageView的ScrollView
*/
- (void)pageViewDidScroll:(UIScrollView *)scrollView;
/**
* pageView開始滑動響應(yīng)
*
* @param scrollView pageView的ScrollView
*/
- (void)pageViewWillBeginDragging:(UIScrollView *)scrollView;
/**
* pageView結(jié)束滑動響應(yīng)
*
* @param scrollView pageView的ScrollView
*/
- (void)pageViewDidEndScrollingAnimation:(UIScrollView *)scrollView;
@end
其他可更改屬性
/**
* 頂部按鈕視圖
*/
@property (weak, nonatomic) IBOutlet UIView *segmentView;
/**
* 頂部視圖高度數(shù)值
*/
@property (assign, nonatomic) float segmentViewHeight;
/**
* 顯示視圖
*/
@property (strong, nonatomic) NSArray * viewControllersArray;
/**
* 頂部按鈕顯示的標(biāo)題的數(shù)組
*/
@property (strong, nonatomic) NSArray * segmentTitleArray;
/**
* 頂部按鈕的數(shù)組,可以通過該數(shù)組對立面的btn進行修改,比如修改字體大小
*/
@property (strong, nonatomic ,readonly) NSMutableArray<UIButton *> * segmentBtnArray;
/**
* 當(dāng)前顯示的控制器頁數(shù),從0開始
*/
@property (assign, nonatomic, readonly) NSInteger currentPage;
/**
* segment按鈕高亮顏色,為nil默認為橘黃色
*/
@property (strong, nonatomic) UIColor *btnHighLightColor;
/**
* segment按鈕非高亮顏色,為nil默認為灰色
*/
@property (strong, nonatomic) UIColor *btnNomalColor;
/**
* 滾動動畫,默認為NO
*/
@property (assign, nonatomic) BOOL scrollAnimation;
/**
* 背景view,可以更改背景顏色等
*/
@property (strong, nonatomic , readonly) UIView * backgroundView;
/**
* 小滑塊視圖,可以更改顏色,是否隱藏等屬性
*/
@property (weak, nonatomic) IBOutlet UIView *slidingBlockView;
/**
* 是否隱藏小滑塊,默認是不隱藏
*/
@property (assign, nonatomic) BOOL isHideSlidingBlock;
/**
* 小滑塊的動畫樣式
*/
@property (assign, nonatomic) NMSlipingBlockAnimation slipingBlockAnimationType;
安裝
- github:https://github.com/NBaby/NMKit/tree/master/NMPageViewController
- cocoapods: pod 'NMPageViewController', '~> 0.0.5' (搜不到請 pod repo update)