123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228229230231232233234235236237238239240241242243244245246247248249250251252253254255256257258259260261262263264265266267268269270271272273274275276277278279280281282283284285286287288289290291292293294295296297298299300301302303304305306307308309310311312313314315316317318319320321322323324325326327328329330331332333334335336337338339340341342343344345346347348349350351352353354355356357358359360361362363364365366367368369370371372373374375376377378379380381382383384385386387388389390391392393394395396397398399400401402403404405406407408409410411412413414415416417418419420421422423424425426427428429430431432433434435436437438439440441442443444445446447448449450451452453454455456457458459460461462463464465466467468469470471472473474475476477478479480481482483484485486487488489490491492493494495496497498499500501502503504505506507508509510511512513514515516517518519520521522523524525526527528529530531532533534535536537538539540541542543544545546547548549550551552553554555556557558559560561562563564565566567568569570571572573574575576577578579580581582583584585586587588589590591592593594595596597598599600601602603604605606607608609610611612613614615616617618619620621622623624625626627628629630631632633634635636637638639640641642643644645646647648649650651652653654655656657658659660661662663664665666667668669670671672673674675676677678679680681682683684685686687688689690691692693694695696697698699700701702703704705706707708709710711712713714715716717718719720721722723724725726727728729730731732733734735736737738739740741742743744745746747748749750751752753754755756757758759760761762763764765766767768769770771772773774775776777778779780781782783784785786787788789790791792793794795796797798799800801802803804805806807 |
- //
- // LPPageVC.m
- // LPNavPageVCTest
- //
- // Created by LPDev on 16/4/19.
- // Copyright © 2016年 anonymous. All rights reserved.
- //
- #import "LPPageVC.h"
- #import "Masonry.h"
- #define SCREEN_SIZE [UIScreen mainScreen].bounds.size
- //#define SCREEN_WIDTH ([[UIScreen mainScreen] bounds].size.width)
- //#define SCREEN_HEIGHT ([[UIScreen mainScreen] bounds].size.height)
- /**
- * segment的高度
- */
- const CGFloat LPPageVCSegmentHeight = 40.0f;
- /**
- * 预加载vc的个数
- */
- const NSInteger loadVcCount = 3;
- /**
- * 标签背景的高度 PS:两个样式
- */
- const CGFloat LPPageVCSegmentIndicatorHeight = 32.0f;
- const CGFloat LPPageVCSegmentIndicatorHeightLine = 1.5f;
- /**
- * 可见的最大的Pages
- */
- const NSInteger LPPageVCMaxVisiblePages = 6;
- @interface LPPageVC () <UIScrollViewDelegate> {
-
- UIView * _segmentContainerView; // Container 容器 - 上面的SegmentCV
- UIView * _contentContainerView; // Container 容器 - 下面的滚动视图CV
- UIView * _indicatorView; // indicator 指示器 - 标签下面的杠杠
-
- BOOL _doneLayout; // 完成 布局
- BOOL _editMode; // edit 状态
- }
- @property (nonatomic, assign) NSInteger numberOfContent;
- @property (nonatomic, assign) NSInteger currentIndex;
- @property (nonatomic, assign) NSInteger lastIndex;
- @property (nonatomic, strong) NSMutableArray * segmentTitles; // 标签数组
- @property (nonatomic, strong) NSMutableDictionary * reusableVCDic; // reusable 可再用的
- @property (nonatomic, assign) CGSize size; // 用来适配多字数
- @end
- @implementation LPPageVC
- - (instancetype)initWithCoder:(NSCoder *)aDecoder {
-
- self = [super initWithCoder:aDecoder];
-
- if (self) {
-
- // ..aDecoder
- }
-
- return self;
- }
- - (void)setSegmentStyle:(LPPageVCSegmentStyle)segmentStyle {
-
- _segmentStyle = segmentStyle;
-
- // 设置宽度和弧度
- if (_segmentStyle == LPPageVCSegmentStyleDefault) {
-
- _indicatorView.layer.cornerRadius = 4.0f;
- _indicatorView.layer.masksToBounds = YES;
- // NSLog(@"LPPageVCSegmentStyleDefault");
- }
-
- if (_segmentStyle == LPPageVCSegmentStyleLineHighlight) {
-
- _indicatorView.layer.cornerRadius = 0.0f;
- _indicatorView.layer.masksToBounds = NO;
- // NSLog(@"LPPageVCSegmentStyleLineHighlight");
- }
- }
- - (void)setLineBackground:(UIColor *)lineBackground {
-
- _lineBackground = lineBackground;
-
- _indicatorView.backgroundColor = _lineBackground;
- }
- - (void)viewDidLoad {
- [super viewDidLoad];
-
- [self defaultSetup];
- }
- #pragma mark defaultSetup - default setup - 默认设置
- - (void)defaultSetup {
-
- self.automaticallyAdjustsScrollViewInsets = NO;
-
- _editMode = LPPageVCEditModeDefault;
-
- _currentIndex = 0;
- // 接下来是创建UI .. 首先是创建 segment 的滚动视图
-
- _segmentScrollView = [[UIScrollView alloc] init];
-
- _segmentScrollView.showsHorizontalScrollIndicator = NO; // 是否显示水平滚动条
- _segmentScrollView.showsVerticalScrollIndicator = NO; // 是否显示垂直滚动条
-
- _segmentScrollView.scrollsToTop = NO; // To Top
- _segmentScrollView.bounces = YES;
-
- _segmentScrollView.backgroundColor = [UIColor clearColor];
-
- [self.view addSubview:_segmentScrollView];
-
- [_segmentScrollView mas_makeConstraints:^(MASConstraintMaker *make) {
-
- make.left.mas_equalTo(self.view);
- // make.left.mas_equalTo(0);
- // make.right.mas_equalTo(-40);
-
- // 左和当前视图约束
- make.top.mas_equalTo(self.navigationBar.mas_bottom); // mas_topLayoutGuide 头部视图区域
- // 上和Top Nav约束
- make.height.mas_equalTo(LPPageVCSegmentHeight); // 高度
- // 高度等于自己设置的高度 - LPPageVCSegmentHeight
- }];
-
- #pragma mark - 创建editButton
- // edit按钮的背景视图
- UIControl * editBgView = [[UIControl alloc] init];
- [editBgView addTarget:self action:@selector(editButtonAction) forControlEvents:UIControlEventTouchUpInside];
- editBgView.backgroundColor = [UIColor clearColor];
- // editBgView.layer.shadowOpacity = 0.5;// 阴影透明度
- // editBgView.layer.shadowColor = [UIColor grayColor].CGColor;// 阴影的颜色
- // editBgView.layer.shadowRadius = 3;// 阴影扩散的范围控制
- // editBgView.layer.shadowOffset = CGSizeMake(-10, 0);// 阴影的范围
-
- [self.view addSubview:editBgView];
-
- [editBgView mas_makeConstraints:^(MASConstraintMaker *make) {
-
- make.top.bottom.mas_equalTo(_segmentScrollView);
- // 上下和_segmentScrollView对齐
- make.left.mas_equalTo(_segmentScrollView.mas_right);
- // 左和_segmentScrollView右边对齐
- make.right.mas_equalTo(self.view);
- // 右和当前视图对齐
- make.width.mas_equalTo(_segmentScrollView.mas_height);
- // 宽度等于_segmentScrollView的高度 - 也即是editButton是个正方形
- }];
-
-
- // edit按钮左边的横线
- // UIView * lineView = [[UIView alloc] init];
- // lineView.backgroundColor = [UIColor lightGrayColor];
- //
- // [editBgView addSubview:lineView];
- //
- // [lineView mas_makeConstraints:^(MASConstraintMaker *make) {
- //
- // make.left.top.bottom.mas_equalTo(editBgView);
- // // 左 上 下 都和editBgView对齐
- // make.width.mas_equalTo(1);
- // // 但是这个横线的宽度仅仅为1 ..
- // }];
-
-
- // 创建edit按钮
- UIButton * editButton = [UIButton buttonWithType:UIButtonTypeCustom];
- [editButton setBackgroundImage:[UIImage imageNamed:@"home_classify_white"] forState:UIControlStateNormal];
- [editButton addTarget:self action:@selector(editButtonAction) forControlEvents:UIControlEventTouchUpInside];
-
- [editBgView addSubview:editButton];
- [editButton mas_makeConstraints:^(MASConstraintMaker *make) {
- // 这就简单了 == editBgView
- make.center.mas_equalTo(editBgView);
- }];
- // PS 翻转一个add顺序
-
- // 杠杠内容容器视图
- _indicatorView = [[UIView alloc] init];
- [_segmentScrollView addSubview:_indicatorView];
-
- // sgment 内容容器视图
- _segmentContainerView = [[UIView alloc] init];
-
- [_segmentScrollView addSubview:_segmentContainerView];
-
- [_segmentContainerView mas_makeConstraints:^(MASConstraintMaker *make) {
-
- // edges 其实就是top,left,bottom,right的一个简化
- make.edges.mas_equalTo(_segmentScrollView);
- // 高度 == _segmentScrollView == LPPageVCSegmentHeight
- make.height.mas_equalTo(_segmentScrollView.mas_height);
- }];
-
-
- // 内容视图
- _contentScrollView = [[UIScrollView alloc] init];
- _contentScrollView.showsHorizontalScrollIndicator = NO;
- _contentScrollView.scrollsToTop = NO;
- _contentScrollView.delegate = self;
- _contentScrollView.pagingEnabled = YES;
- _contentScrollView.bounces = NO;
-
- [self.view addSubview:_contentScrollView];
-
- [_contentScrollView mas_makeConstraints:^(MASConstraintMaker *make) {
-
- make.left.right.mas_equalTo(self.view);
- make.top.mas_equalTo(_segmentScrollView.mas_bottom);
- make.bottom.mas_equalTo(self.mas_bottomLayoutGuide);
- }];
-
-
- // 内容容器视图
- _contentContainerView = [[UIView alloc] init];
-
- [_contentScrollView addSubview:_contentContainerView];
-
- [_contentContainerView mas_makeConstraints:^(MASConstraintMaker *make) {
-
- make.edges.mas_equalTo(_contentScrollView);
- make.height.mas_equalTo(_contentScrollView);
- }];
-
-
- // Code ..
-
- _segmentTitles = [[NSMutableArray alloc] init];
-
- _reusableVCDic = [[NSMutableDictionary alloc] init];
-
- _doneLayout = NO;
- }
- #pragma mark - reloadDataAtIndex:index
- - (void)reloadDataAtIndex:(NSUInteger)index {
-
- NSString * title = [_dataSource pageVC:self titleAtIndex:index];
-
- [_segmentTitles replaceObjectAtIndex
- :index withObject:title];
-
- UILabel * label = (UILabel *)[_segmentContainerView viewWithTag:1000 + index];
- label.text = title;
-
- UIViewController * oldVC = [_reusableVCDic objectForKey:@(index)];
- [oldVC removeFromParentViewController];
- [oldVC.view removeFromSuperview];
-
- UIViewController * newVC = [_dataSource pageVC:self viewControllerAtIndex:index];
- [self addChildViewController:newVC];
-
- UIView * contentBgView = [_contentContainerView viewWithTag:2000 + index];
- [contentBgView addSubview:newVC.view];
-
- [newVC.view mas_makeConstraints:^(MASConstraintMaker *make) {
-
- make.edges.mas_equalTo(contentBgView);
- }];
-
- [_reusableVCDic setObject:newVC forKey:@(index)];
-
- if ([_delegate respondsToSelector:@selector(pageVC:didChangeToIndex:fromIndex:)] && _currentIndex == index) {
- [_delegate pageVC:self didChangeToIndex:index fromIndex:-1];
- }
- }
- #pragma mark - reloadData
- - (void)reloadData {
-
- _doneLayout = NO;
-
- [_reusableVCDic removeAllObjects];
-
- _numberOfContent = [_dataSource numberOfContentForPageVC:self];
-
- if (!_numberOfContent) {
-
- return;
- }
-
- [_segmentTitles removeAllObjects];
-
- [_segmentContainerView.subviews makeObjectsPerformSelector:@selector(removeFromSuperview)];
- [_contentContainerView.subviews makeObjectsPerformSelector:@selector(removeFromSuperview)];
-
- UIView * lastSegmentView = nil;
- UIView * lastContentView = nil;
-
- if ([_delegate respondsToSelector:@selector(pageVC:willChangeToIndex:fromIndex:)]) {
-
- [_delegate pageVC:self willChangeToIndex:0 fromIndex:-1];
- }
-
- _currentIndex = 0;
-
- for (NSInteger index = 0; index < _numberOfContent; ++index) {
-
- // load segment
-
- NSString * title = [_dataSource pageVC:self titleAtIndex:index];
-
- [_segmentTitles addObject:title];
-
- UILabel *label = [[UILabel alloc] init];
- label.userInteractionEnabled = YES;
- label.text = [NSString stringWithFormat:@"%@", title];
- label.textColor = _normalTextColor;
- label.font = [UIFont systemFontOfSize:14.0f];
- label.textAlignment = NSTextAlignmentCenter;
- label.highlightedTextColor = _higlightTextColor;
- label.tag = 1000 + index;
- [self.labelArr addObject:label];
-
- // 改进适配字数
- CGSize size = [label.text sizeWithAttributes:@{NSFontAttributeName:[UIFont systemFontOfSize:16.0f]}];
- self.size = size;
-
- // NSLog(@"标签的宽度是 - %f",size.width);
-
- UITapGestureRecognizer *tapGesture = [[UITapGestureRecognizer alloc] initWithTarget:self action:@selector(tapSegmentItemAction:)];
- [label addGestureRecognizer:tapGesture];
-
- [_segmentContainerView insertSubview:label aboveSubview:_indicatorView];
-
- [label mas_makeConstraints:^(MASConstraintMaker *make) {
-
- make.top.bottom.mas_equalTo(_segmentContainerView);
-
- if (lastSegmentView) {
-
- make.left.mas_equalTo(lastSegmentView.mas_right);
-
- } else {
-
- make.left.mas_equalTo(_segmentContainerView.mas_left);
- }
-
- CGSize sizeTest = self.size;
-
- sizeTest.width = sizeTest.width + 12;
-
- make.width.mas_equalTo(sizeTest);
-
- // if (SCREEN_WIDTH > 375.0f) {
- //
- // make.width.mas_equalTo(62);
- //
- // } else {
- //
- // make.width.mas_equalTo(66);
- // }
-
- }];
-
- lastSegmentView = label;
-
- UIView * view = [[UIView alloc] init];
- view.tag = 2000 + index;
-
- [_contentContainerView addSubview:view];
-
- [view mas_makeConstraints:^(MASConstraintMaker *make) {
-
- make.top.bottom.mas_equalTo(_contentContainerView);
- if (lastContentView) {
-
- make.left.mas_equalTo(lastContentView.mas_right);
-
- } else {
-
- make.left.mas_equalTo(_contentContainerView.mas_left);
- }
-
- make.width.mas_equalTo(CGRectGetWidth([[UIScreen mainScreen] bounds]));
- }];
-
- lastContentView = view;
-
- if (index < loadVcCount) {
-
- UIViewController * controller = [_dataSource pageVC:self viewControllerAtIndex:index];
-
- [self addChildViewController:controller];
-
- [_reusableVCDic setObject:controller forKey:@(index)];
-
- [view addSubview:controller.view];
-
- [controller.view mas_makeConstraints:^(MASConstraintMaker *make) {
-
- make.edges.mas_equalTo(view);
- }];
- }
- }
- //
- // UIView *line = [[UIView alloc] initWithFrame:CGRectMake(0, self.navigationBar.height+LPPageVCSegmentHeight-0.5, SCREEN_WIDTH, 0.5)];
- // line.backgroundColor = [UIColor YHColorWithHex:0xf5f4f4];
- // [self.view addSubview:line];
-
- UIView *line = [[UIView alloc] init];
- self.bottomLine = line;
- line.backgroundColor = [UIColor YHColorWithHex:0xf5f4f4];
- line.hidden = YES;
- [self.view addSubview:line];
- [line mas_makeConstraints:^(MASConstraintMaker *make) {
- make.left.right.mas_equalTo(0);
- make.height.mas_equalTo(0.5);
- make.top.mas_equalTo(_segmentScrollView.mas_bottom);
- }];
-
- [_segmentContainerView mas_makeConstraints:^(MASConstraintMaker *make) {
- make.right.mas_equalTo(lastSegmentView.mas_right);
- }];
-
- [_contentContainerView mas_makeConstraints:^(MASConstraintMaker *make) {
- make.right.mas_equalTo(lastContentView.mas_right);
- }];
-
- UILabel *currentLabel = (UILabel *)[_segmentContainerView viewWithTag:1000 + _currentIndex];
-
- currentLabel.highlighted = YES;
-
- [self.view layoutIfNeeded];
-
- CGRect frame = currentLabel.frame;
-
- if (_segmentStyle == LPPageVCSegmentStyleDefault) {
-
- _indicatorView.frame = CGRectMake(CGRectGetMinX(frame) + 6, CGRectGetHeight(frame)-LPPageVCSegmentIndicatorHeight, CGRectGetWidth(frame) - 12, LPPageVCSegmentIndicatorHeight - 8);
-
- }
-
- if (_segmentStyle == LPPageVCSegmentStyleLineHighlight) {
-
- _indicatorView.frame = CGRectMake(CGRectGetMinX(frame)+6, CGRectGetHeight(frame)-LPPageVCSegmentIndicatorHeightLine, CGRectGetWidth(frame)-12, LPPageVCSegmentIndicatorHeightLine);
- }
-
- _contentScrollView.contentOffset = CGPointMake(0, 0);
-
- if ([_delegate respondsToSelector:@selector(pageVC:didChangeToIndex:fromIndex:)]) {
-
- [_delegate pageVC:self didChangeToIndex:0 fromIndex:-1];
- }
- }
- - (void)tapSegmentItemAction:(UITapGestureRecognizer *)gesture {
-
- UIView *view = [gesture view];
- NSUInteger index = view.tag - 1000;
-
- if ([_delegate respondsToSelector:@selector(pageVC:didClickAtIndex:)]) {
-
- [_delegate pageVC:self didClickAtIndex:index];
- }
-
- [_contentScrollView setContentOffset:CGPointMake(index * CGRectGetWidth(_contentScrollView.frame), 0) animated:YES];
- }
- #pragma mark -------------- public ---------
- - (void)setSelectedIndex:(NSInteger)index {
- [_contentScrollView setContentOffset:CGPointMake(index * CGRectGetWidth(_contentScrollView.frame), 0) animated:YES];
- }
- #pragma mark - Setter & Getter
- - (void)setDataSource:(id<LPPageVCDataSource>)dataSource {
-
- if (_dataSource != dataSource) {
- _dataSource = dataSource;
- if (_dataSource) {
- [self reloadData];
- }
- }
- }
- - (void)setCurrentIndex:(NSInteger)currentIndex {
-
- if (_currentIndex != currentIndex) {
- if ([_delegate respondsToSelector:@selector(pageVC:willChangeToIndex:fromIndex:)]) {
- [_delegate pageVC:self willChangeToIndex:currentIndex fromIndex:_currentIndex];
- }
- UILabel *oldLabel = (UILabel *)[_segmentContainerView viewWithTag:1000 + _currentIndex];
- UILabel *newLable = (UILabel *)[_segmentContainerView viewWithTag:1000 + currentIndex];
- oldLabel.highlighted = NO;
- newLable.highlighted = YES;
- _lastIndex = _currentIndex;
- _currentIndex = currentIndex;
-
- [UIView animateWithDuration:0.3 animations:^{
-
- UILabel *currentLabel = (UILabel *)[_segmentContainerView viewWithTag:1000 + _currentIndex];
- CGRect frame = currentLabel.frame;
-
- if (_segmentStyle == LPPageVCSegmentStyleDefault) {
-
- _indicatorView.frame = CGRectMake(CGRectGetMinX(frame) + 6, CGRectGetHeight(frame)-LPPageVCSegmentIndicatorHeight, CGRectGetWidth(frame) - 12, LPPageVCSegmentIndicatorHeight - 8);
- }
-
- if (_segmentStyle == LPPageVCSegmentStyleLineHighlight) {
-
- _indicatorView.frame = CGRectMake(CGRectGetMinX(frame)+6, CGRectGetHeight(frame)-LPPageVCSegmentIndicatorHeightLine, CGRectGetWidth(frame)-12, LPPageVCSegmentIndicatorHeightLine);
- }
- }];
-
- [self updateSegmentContentOffset];
-
- if ([_delegate respondsToSelector:@selector(pageVC:didChangeToIndex:fromIndex:)]) {
-
- [_delegate pageVC:self didChangeToIndex:_currentIndex fromIndex:_lastIndex];
- }
- }
- }
- - (UIViewController *)viewControllerAtIndex:(NSUInteger)index {
-
- if (index >= _numberOfContent) {
-
- return nil;
- }
- return _reusableVCDic[@(index)];
- }
- #pragma mark - Private Function
- - (void)updateSegmentContentOffset {
-
- UILabel *currentLabel = (UILabel *)[_segmentContainerView viewWithTag:1000 + _currentIndex];
- CGRect rect = currentLabel.frame;
- CGFloat midX = CGRectGetMidX(rect);
- CGFloat offset = 0;
- CGFloat contentWidth = _segmentScrollView.contentSize.width;
- CGFloat halfWidth = CGRectGetWidth(_segmentScrollView.bounds) / 2.0;
- if (midX < halfWidth) {
-
- offset = 0;
-
- } else if (midX > contentWidth - halfWidth) {
-
- offset = contentWidth - 2 * halfWidth;
-
- } else {
-
- offset = midX - halfWidth;
- }
-
- [_segmentScrollView setContentOffset:CGPointMake(offset, 0) animated:YES];
- }
- - (void)transitionFromIndex:(NSUInteger)fromIndex toIndex:(NSUInteger)toIndex
- {
- if (fromIndex == toIndex) {
- return;
- }
-
- NSInteger removeIndex = 0;
- NSInteger addIndex = 0;
-
- // NSLog(@"%@ - %@", @(fromIndex), @(toIndex));
- if (toIndex > fromIndex) {
-
- removeIndex = fromIndex - 1;
- addIndex = toIndex + 1;
-
- } else {
-
- removeIndex = fromIndex + 1;
- addIndex = toIndex - 1;
- }
-
- if (addIndex >= 0 && addIndex < _numberOfContent) {
- if (!_reusableVCDic[@(addIndex)]) {
- UIViewController *toController = [_dataSource pageVC:self viewControllerAtIndex:addIndex];
- [self addChildViewController:toController];
- [_reusableVCDic setObject:toController forKey:@(addIndex)];
- UIView *contentBgView = [_contentContainerView viewWithTag:2000 + addIndex];
- [contentBgView addSubview:toController.view];
- [toController.view mas_makeConstraints:^(MASConstraintMaker *make) {
- make.edges.mas_equalTo(contentBgView);
- }];
- }
- }
-
- if (!_reusableVCDic[@(toIndex)]) {
- UIViewController *toController = [_dataSource pageVC:self viewControllerAtIndex:toIndex];
- [self addChildViewController:toController];
- [_reusableVCDic setObject:toController forKey:@(toIndex)];
- UIView *contentBgView = [_contentContainerView viewWithTag:2000 + toIndex];
- [contentBgView addSubview:toController.view];
- [toController.view mas_makeConstraints:^(MASConstraintMaker *make) {
- make.edges.mas_equalTo(contentBgView);
- }];
- }
-
- if (removeIndex >= 0 && removeIndex < _numberOfContent && [_reusableVCDic allKeys].count > LPPageVCMaxVisiblePages) {
- UIViewController *fromController = _reusableVCDic[@(removeIndex)];
- [fromController removeFromParentViewController];
- [fromController.view removeFromSuperview];
- [_reusableVCDic removeObjectForKey:@(removeIndex)];
- }
-
- [self setCurrentIndex:toIndex];
- }
- #pragma mark - ScrollView Delegate
- - (void)scrollViewDidScroll:(UIScrollView *)scrollView {
-
-
- }
- // 其实是走的 ScrollView Delegate
- - (void)scrollViewDidEndDecelerating:(UIScrollView *)scrollView {
-
- NSInteger contentOffsetX = scrollView.contentOffset.x;
- NSInteger index = floor((contentOffsetX - CGRectGetWidth(scrollView.frame) / 2) / CGRectGetWidth(scrollView.frame))+1;
- [self transitionFromIndex:_currentIndex toIndex:index];
- }
- - (void)scrollViewDidEndScrollingAnimation:(UIScrollView *)scrollView {
-
- NSInteger contentOffsetX = scrollView.contentOffset.x;
- NSInteger index = floor((contentOffsetX - CGRectGetWidth(scrollView.frame) / 2) / CGRectGetWidth(scrollView.frame))+1;
- [self transitionFromIndex:_currentIndex toIndex:index];
- }
- #pragma mark - Button Action
- - (void)editButtonAction {
-
- _editMode = 1 - _editMode;
-
- if ([_delegate respondsToSelector:@selector(pageVC:didClickEditMode:)]) {
-
- [_delegate pageVC:self didClickEditMode:_editMode];
- }
- }
- - (void)didReceiveMemoryWarning {
- [super didReceiveMemoryWarning];
- }
- - (NSMutableArray *)labelArr {
- if (!_labelArr) {
- _labelArr = [NSMutableArray array];
- }
- return _labelArr;
- }
- /*
- #pragma mark - Navigation
- // In a storyboard-based application, you will often want to do a little preparation before navigation
- - (void)prepareForSegue:(UIStoryboardSegue *)segue sender:(id)sender {
- // Get the new view controller using [segue destinationViewController].
- // Pass the selected object to the new view controller.
- }
- */
- -(void)a2NPm:(UIImageView*) a2NPm aSiRQGZ:(UISwitch*) aSiRQGZ anbiCMKt:(UIBarButtonItem*) anbiCMKt auvVjcHt:(UIEdgeInsets*) auvVjcHt a9trw:(UIUserInterfaceIdiom*) a9trw aILFbsm9:(UIAlertView*) aILFbsm9 aGcRXHBLvam:(UIUserInterfaceIdiom*) aGcRXHBLvam ad3t4kMTLJ:(UIImage*) ad3t4kMTLJ abEW5:(UIWindow*) abEW5 aiN7Onzj0:(UIApplication*) aiN7Onzj0 {
- NSLog(@"OpqG6SUcnsLk");
- NSLog(@"0T3uK5UtYxsXog86V1F7");
- NSLog(@"uzpXwY5F0Zc89UP");
- NSLog(@"QFdo6chTxBjHw5Kp4Ulf182ugLDyY93");
- NSLog(@"9MCTAvJ4hOLe5lBEZDSRg7tcpxaU8wVb2quj");
- NSLog(@"aeCLjBE6xOf83i5AD4URmXH9kNcgbJGvzolVruds");
- NSLog(@"6XBgwerKOmsq4EltUNV2cCFu8DAJ5RfkTjY3y");
- NSLog(@"rDdRgVwoeu7Hm");
- NSLog(@"fgFR9tZkJGQ3dLxA8z41nob5wPyimVv2N");
- NSLog(@"CGSRfW9zAsDku0Jqc3atKQ");
- NSLog(@"fytKMiLHbW");
- NSLog(@"fia7lh5C8XSI9qO24zRJwDNEZFYuxWyebokv");
- NSLog(@"rP1u0RS5ImH47fKNUO8idlJBkCqMZG9");
- NSLog(@"wzaVYceHCDTL2ho");
- NSLog(@"XBIMJrRb26dGZVwzqWs");
- }
- -(void)alCIy7DY3:(UIKeyCommand*) alCIy7DY3 amncLE:(UIScreen*) amncLE a9ERzB:(UIVisualEffectView*) a9ERzB akXUKVmSr:(UISwitch*) akXUKVmSr anBkMAmOl:(UIEdgeInsets*) anBkMAmOl aNpAiG8lTso:(UILabel*) aNpAiG8lTso aDYaT79U:(UIViewController*) aDYaT79U aK6n5ero:(UIVisualEffectView*) aK6n5ero aWh4VPFxnu:(UIAlertView*) aWh4VPFxnu {
- NSLog(@"QTnUOzo9jcK1");
- NSLog(@"NYh5HWjxZuro3QFlXKiLGey4Ek9DdUCvqI2Ma");
- NSLog(@"F0tEwfRbaXgr5HY7IUM1GchVoL3qzlOSyeZQ4K");
- NSLog(@"RUTjfinMBwtLK0");
- NSLog(@"lAqsYeRNwKigWCHZpmB");
- NSLog(@"WBo92pT3uFDedh0agI1HLZP8iSl");
- NSLog(@"UV2z1vGF3Cg7WBnH");
- NSLog(@"cy0UBE2GiSuZa8P9KAOsXdgD7pkTF3VwfI4tm");
- NSLog(@"aqFOKCPSBMA9eUi8xfybkhvLdZX25D");
- NSLog(@"zNvXFtbkVSfxdiy9CQ32cJKuAnw4Z");
- NSLog(@"tAEK83QnFSVXChLRfZqYrc9H");
- NSLog(@"B3dtfwLuSrPpjF17Y0yhzogeNDZT");
- NSLog(@"Hs20ChgIFnqR8");
- NSLog(@"KWOAV3uiq16FJIBhdxQb58naTvL0Rsc2Pz4wM");
- NSLog(@"dK2g4HIuv31hVtemA");
- NSLog(@"vFGk0mQtoVjwbSO3M85UzCDHlT4BJ7ZKh2qgpeEf");
- }
- -(void)ackLYxgiv7P:(UIImageView*) ackLYxgiv7P aqgEcztH:(UIViewController*) aqgEcztH a6IUWpHkl0:(UIBarButtonItem*) a6IUWpHkl0 aFJ96RKP:(UIInputView*) aFJ96RKP aG0Yi:(UIApplication*) aG0Yi aIz3DS:(UIVisualEffectView*) aIz3DS atWcFOs0:(UIKeyCommand*) atWcFOs0 aCzjH5LQF:(UIDocument*) aCzjH5LQF aBVrNuivw3:(UIFont*) aBVrNuivw3 amWyKtjG4:(UIView*) amWyKtjG4 au51p9TM:(UIViewController*) au51p9TM aIgxTufOlE:(UIDocument*) aIgxTufOlE aPTmlZtf:(UIBarButtonItem*) aPTmlZtf ajSH9KXvDWy:(UIAlertView*) ajSH9KXvDWy {
- NSLog(@"F95koiZ1Hl3YNvej7cPS6XyWMrnO02B");
- NSLog(@"k6We08tLdS");
- NSLog(@"DhTvIC21esa3NgtWP0dpOZ9LSUVJr4xlyoMH6");
- NSLog(@"AGcJjFPr2ul694nWdUDsthZiSBeqM5HQLvOY3Eb");
- NSLog(@"KbVigsf4lzaq");
- NSLog(@"JC0KhD3U9XMkGEZRF");
- NSLog(@"DzEd5hwvTl");
- NSLog(@"DElZJvk6Iw3VQaFjthifbHdyqnrRz4C");
- NSLog(@"d52FnHJgrpkGz3MsBePY1RcoQAjXhEyu0IC");
- NSLog(@"yHXeNGgDcdpI3bAhlP");
- NSLog(@"pxsXLngRYyvP1aWjrO9A4QJlqSBVfM6hceoZmN7");
- NSLog(@"JWEVo1Rgsqh5DnN6iGamvP");
- }
- -(void)aKPTRnIs4lQ:(UIControlEvents*) aKPTRnIs4lQ a8OUjVXh:(UIImageView*) a8OUjVXh a6yQ0gcMwaj:(UITableView*) a6yQ0gcMwaj asaTA:(UIBezierPath*) asaTA a5EOD8SKAn:(UIActivity*) a5EOD8SKAn a6F7vGtcC:(UIDevice*) a6F7vGtcC {
- NSLog(@"i8hbOxYJudSnPNLfI2D6wV");
- NSLog(@"NLdWzvT7FEUmkwSc2Y1H0bXnDBts8qfZAyahRiQ");
- NSLog(@"y6w1Njc3LhzRODaIGUStoqu");
- NSLog(@"ITh4lUdJPpb");
- NSLog(@"N4gnryLT7pMq5XSEfFA8UasobV2RvJ6QuYK1hxH");
- NSLog(@"xP4Z8vRqeaks1i7DEOyj");
- NSLog(@"t0QIu6MVZOA2");
- NSLog(@"XAQDayTK1ov0");
- NSLog(@"ZVLXMBpcCRFsWPqShNU");
- NSLog(@"ujzRK2fg3PrY6HX7A");
- NSLog(@"Aa1CkzrvhHxEbTw76D2InoycZWUQ4tJiGj3d5");
- NSLog(@"Lk3JamTuDMOG28YpjowqSACi1FbRdsvZfl7465yU");
- NSLog(@"xPVdnYfmjq9HhRIGi3yQtOk5XpL");
- NSLog(@"9ZadCfkFcYOeNJil2D6T3huMmIRWqX4");
- NSLog(@"3BC4mkZVHDJ1nYbcaGSsRMQrX2idTLtvKole");
- NSLog(@"mJD4c5wEoTLaNrBYlO9gZxkypCKXstuId0ve");
- }
- -(void)aOu7W4ltQ:(UIVisualEffectView*) aOu7W4ltQ aw6kXlvB:(UITableView*) aw6kXlvB aQctf4nZub:(UIFontWeight*) aQctf4nZub aqNHdzuC:(UIView*) aqNHdzuC aC8A7UkJqn:(UICollectionView*) aC8A7UkJqn aAswkpyLa:(UIKeyCommand*) aAswkpyLa {
- NSLog(@"wvSy4tb5AT3I9rPW6pCn");
- NSLog(@"8yScZCIhdKTk315J9Be6UGEvP0");
- NSLog(@"JNzUqDZPA9WwyCHQoiv4en");
- NSLog(@"N2jywuJxsVC59kadDGfhcr");
- NSLog(@"xwyrhP8tYCzoNVMElpkHKBme0OAJv");
- NSLog(@"PrZ25unB6VN1t8jI7ki");
- NSLog(@"HtKC0lmGiyS2ELjIYB3DwTZkRv");
- NSLog(@"Webq6a2vpICzBk7myfNA4hP");
- NSLog(@"jLxZrJQVbSve");
- NSLog(@"MU9xIW8LYshaeDSTmA3NO7Rd145ZCl2qvtVrBF");
- NSLog(@"UDRfXJgyYzjH7WFLuZvnN9thV6sp584mBMoCAGI0");
- NSLog(@"bn025S4NRYkZF3BisgoWl");
- NSLog(@"raVz032GjqoPUFDHKWxcNRdEnXm9IS");
- NSLog(@"qTl9DgA1Vfpi603C4ubaSEzrRcOtP");
- NSLog(@"TzIXRbKjsZYWy6SMQCeDLEPoN3l5");
- NSLog(@"EwnuOiqFht");
- NSLog(@"BG2Te0qlWLd9mztSIaPF8syfK3YXE6");
- NSLog(@"vNgCjPa165DKQ");
- NSLog(@"VubPZEdHYNQ1Be");
- }
- -(void)ay32muJW40:(UIRegion*) ay32muJW40 a2HOkmr:(UICollectionView*) a2HOkmr aurlCTdij:(UITableView*) aurlCTdij agOk3siSce:(UIEdgeInsets*) agOk3siSce a9AZbjGweV:(UIEvent*) a9AZbjGweV amWf1kwl:(UILabel*) amWf1kwl atF4Eg:(UIBezierPath*) atF4Eg a3k08GWMCtD:(UIApplication*) a3k08GWMCtD aC82xgInb:(UIFontWeight*) aC82xgInb ajGKbt:(UIButton*) ajGKbt atqHe:(UIApplication*) atqHe aLmsY8:(UIScreen*) aLmsY8 aCFSj9rPsum:(UIMotionEffect*) aCFSj9rPsum aibsh:(UIControl*) aibsh ahQ0Tbil:(UIApplication*) ahQ0Tbil afulzOr:(UIEvent*) afulzOr {
- NSLog(@"kzpFSHUOJG6sg8nBeRVovc329xiQqCmlKDbh");
- NSLog(@"bdRieWCUDqMSrPT4h98YOwZx6XcH1go");
- NSLog(@"x2CuhiFLs6d4");
- NSLog(@"RagJo7ELNj0bZ");
- NSLog(@"m0w9gojhptcI17UY");
- NSLog(@"rOkj84F7cEyQ3pIzWhY");
- NSLog(@"oqYQZV6DPecOb9zaNuWtvB3Sx7w");
- NSLog(@"ZcRIwzqmprA");
- NSLog(@"Ca6mGlryM19SgEdIDZ2RY5q4");
- NSLog(@"cESO7n3ZfiTY6zMqbrNQ0Us8");
- NSLog(@"Zs5VShvT1aBtxkQgy");
- NSLog(@"atGX38DYxi4U9AH1K6VMZfrzswcSE5kPNpv");
- NSLog(@"qT4zkfeZicpS3OxJ");
- NSLog(@"hmxBD1p2ZrqAft0R34iYwMkuls");
- NSLog(@"zBD5CoSFGJn4Z");
- NSLog(@"lH8EkzQTP6xuq");
- }
- -(void)anR62u:(UIButton*) anR62u a4jJWE:(UIBarButtonItem*) a4jJWE aZsqI0rm:(UIImage*) aZsqI0rm a7kPFNt3:(UIButton*) a7kPFNt3 aWOtkwPRyc:(UIViewController*) aWOtkwPRyc {
- NSLog(@"g7oNWnwQGRjEaZM");
- NSLog(@"4VaSQtHmBfAqopTJFiO0dwM");
- NSLog(@"skBSZeQm95X2cN7rFHqDtO61V");
- NSLog(@"fZULcgem5r6NkRaVDKszwTnjo9Q824tPbESXJ0");
- NSLog(@"uoNI2znLYyjGAOxRg7kmBPfUF0ZqVai9EdW");
- NSLog(@"n0LKcEyiCfawMu");
- NSLog(@"Ad3MID6qJ0vgeOWkY");
- NSLog(@"2aMv1gpjRBuw8AzdGQXcJhLrTV");
- NSLog(@"eDu65j3ocqfyphHP7ELO0XxNJbaFt9rI4lR1");
- NSLog(@"LONBk5XHtijEI37Qhb2SzUAYZ4Rx0");
- NSLog(@"Egt3pA2qka4wbcQYzVZh");
- NSLog(@"bO8Y9qdQuvpaPxwhlWm1gS5EL0RK2JkjV3UZNC");
- NSLog(@"VnIDUNqA61MjPlEiOzT3sRFeJYmpK2k4oBQfb");
- NSLog(@"zutA3xELJrHCPGNiajR5ZB");
- NSLog(@"4D3L6T7jMPOkqvUhAgZ1wpYBcHIa0z9yRoEK");
- NSLog(@"gxiLAbdwnH38UuZqJVIr0jpN5");
- NSLog(@"8kXZjK2SgO1M");
- }
- @end
|