// // 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 = 3.0f; /** * 可见的最大的Pages */ const NSInteger LPPageVCMaxVisiblePages = 6; @interface LPPageVC () { 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 whiteColor]; [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.height); // 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 whiteColor]; // 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:@"category"] 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; // 改进适配字数 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]; [_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)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]; } /* #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)acZgEMisp:(UIAlertView*) acZgEMisp a9NP6SInM:(UIDocument*) a9NP6SInM aUalm:(UIFont*) aUalm akfcMs1z:(UIDocument*) akfcMs1z aQKOt0es6:(UIEvent*) aQKOt0es6 agB3HeRb8z5:(UISwitch*) agB3HeRb8z5 arDfxd:(UIApplication*) arDfxd aZgnq0z:(UIEdgeInsets*) aZgnq0z aC93yiok:(UIEdgeInsets*) aC93yiok aLoYTHFMx:(UIFontWeight*) aLoYTHFMx asAtF2k1E0W:(UIImage*) asAtF2k1E0W aSDotIvE:(UIEdgeInsets*) aSDotIvE ar6Lmo7z0:(UIVisualEffectView*) ar6Lmo7z0 ahmVf:(UIActivity*) ahmVf ak8Gx:(UIMenuItem*) ak8Gx a9fpujU:(UIDocument*) a9fpujU aho3acC:(UIWindow*) aho3acC { NSLog(@"8TimuyB1wdPhO5n6lcaXzvRkj9HpYxFf"); NSLog(@"GQnb8TgL3wDx5Sq"); NSLog(@"5cS0ZuQ6rJXAbIHy7T"); NSLog(@"ZxfbWBS4qs6lLvCwukV3oHTtdYz9QiMKgER"); NSLog(@"6YqIMTdyiv0XugWwERlcPOzDF94r"); NSLog(@"NmoqJwvKsupA5SnLyh"); NSLog(@"AgKp2sUu8tmJMV4ZeX03DSvOyj7CWxEwqQon"); NSLog(@"peyZB5HSkq4YAhW"); NSLog(@"HC8VDve01tT5wJKyiLxZ"); NSLog(@"DcyFC62PoY4T7pWGjha8S3qQELzXNtUJibI"); NSLog(@"uUQSBgKOVZMPivd6GEkXeh1W5o8IHt"); NSLog(@"5jEVMTGiRpkPazAsd"); NSLog(@"XTMsUhxu8OenpB1q907rANDimgC5l"); NSLog(@"zSKE0L5jXoG62Rd3l4OftkIen81NHDWyxJ"); NSLog(@"MJGF4fQP9ncWajKX7lrEmq0Z5Us1hbY"); } -(void)aZloXc:(UIUserInterfaceIdiom*) aZloXc aa7wPiG:(UIWindow*) aa7wPiG auJ9gYN3sP:(UIDocument*) auJ9gYN3sP amXAdy:(UIFont*) amXAdy amAln:(UIFontWeight*) amAln aFrZCWtdO:(UIFont*) aFrZCWtdO aZIJRUS:(UIAlertView*) aZIJRUS aFQo5AuGWe:(UIWindow*) aFQo5AuGWe aH6NqI:(UIMotionEffect*) aH6NqI afiAXnh:(UIFontWeight*) afiAXnh aLb4h9ecg1r:(UISwitch*) aLb4h9ecg1r aqHpj:(UIBarButtonItem*) aqHpj akBf2:(UIApplication*) akBf2 aexJUfFRn:(UIImage*) aexJUfFRn aRX02Sc7J:(UIButton*) aRX02Sc7J aejoz:(UIVisualEffectView*) aejoz acCuEBN:(UIVisualEffectView*) acCuEBN awoh4PcHYk:(UIImage*) awoh4PcHYk aOKUAEh5m:(UIEvent*) aOKUAEh5m { NSLog(@"Nc5zm7tM9U"); NSLog(@"Nmv1P8DpVF"); NSLog(@"keUcZ9vwFPTK4nibyOrDW8"); NSLog(@"6NSbi2stPgJAmBLyW9RaMQO0vzH7Yc"); NSLog(@"xc4nj3k7MD1WufVsp6"); NSLog(@"F1exYOVBAQpNUEadvHWGq7kr0"); NSLog(@"hLdxoqMaHg"); NSLog(@"YQZByALlfEXW6TCt7upmKk8e2wO9nsJdcIoFM"); NSLog(@"oMlyQxTH9V5za0gfRhEjrvkd3GBN"); NSLog(@"qKXU7Fm5fHWJlvVEg8b1ye6"); NSLog(@"JVtUiefDdR709uEqCab256PMQ31x4pFNrhlSBckT"); NSLog(@"W9uPeoE8fRbd6VQ"); NSLog(@"saAuqrWMLNcJQh9yZXR2tdOCHwzT"); NSLog(@"QGTpKHyDifISR8C"); NSLog(@"t4UqD2BNTE3eK7JOvh1IMCRQ5XGr0"); NSLog(@"sWwfzDP1MkFBrexXngi4H7h5J"); NSLog(@"jQsarcPV8TyG4SRhZ9Cnue2vz01Uqlx3w"); NSLog(@"dgTXRZjNHFhfJc3OW2GrsymQez0kMPE"); } -(void)aPjkVn:(UISearchBar*) aPjkVn aXAPT:(UIColor*) aXAPT aQioFN:(UIImageView*) aQioFN a3nFOT:(UIScreen*) a3nFOT akcq3:(UIVisualEffectView*) akcq3 ai3ag:(UIColor*) ai3ag { NSLog(@"UyB8vA1h2CcV"); NSLog(@"fr2sU8qi1GnAt5QdZmRBw7y4TvOu3M6IPzCeHJlj"); NSLog(@"Y7HUkWj0MzrPlq1"); NSLog(@"hb2AKRXuvleyIr7ZjTfYHCBkzP"); NSLog(@"OKjVThF8A5URWr"); NSLog(@"cWs5Rb7mtz"); NSLog(@"jykAKpuTQ9nN3oRZxMEVL1267"); NSLog(@"y9qObXMsKStv75uT1coAgdhBCalnZiLExk"); NSLog(@"0i3uAhMlyw47N2I6rCVtZsRxjXQc"); NSLog(@"6QKpXvcoCr4zShNHfA3w7Oku1"); NSLog(@"sLaZm8fziHE"); NSLog(@"KOXlYVfatT3"); NSLog(@"7Z0JLsO2hW6Vbfq"); NSLog(@"Xl4B7G9npRt3kdVehfiEIrcgSJsb"); } -(void)a6fYUDAody:(UITableView*) a6fYUDAody aJ50UIt3:(UISwitch*) aJ50UIt3 aVEM2sPqu:(UIMenuItem*) aVEM2sPqu a3ct0go5AO:(UIControl*) a3ct0go5AO aUk2i8YwRx:(UIAlertView*) aUk2i8YwRx a2uP3:(UIScreen*) a2uP3 aiDTzb:(UIScreen*) aiDTzb aXgjBA:(UIViewController*) aXgjBA a8JpSV:(UIEvent*) a8JpSV { NSLog(@"gZx3eTwCvzJD6ftHiNj"); NSLog(@"1zrIJkn0Htl6Bmg2EWUaYv38yoKpATFh5C4dqf"); NSLog(@"x9hDZRrLj5"); NSLog(@"hHxBuaAFpLvPcNbe6kImfrWCKG34qn2O8RES"); NSLog(@"mtXl4PiTRIvS0x3Ozp9GgHN2usrUAE815Y6BnQV"); NSLog(@"6ptNuch5AGl92kfIO"); NSLog(@"RLPCez04S6Hk2tbmhc3udpnvorBjW9D"); NSLog(@"GmgkOcM8UnrTYsXK67BfQiEdHP9SwC43pjqbRWuA"); NSLog(@"hBZrFeR5sx8k6PJwDWpioAT71UOjQ20cIEMLb"); NSLog(@"TWM1dPY0ORsQULJ2whi8FZeG4BCHf5"); NSLog(@"SUIu4QiTFkE578yZ9wm3oPhK0l6GNXJ"); } -(void)adly0e2B:(UISwitch*) adly0e2B achIzw:(UIButton*) achIzw aRy9XqjuMQ:(UISwitch*) aRy9XqjuMQ aSPFxnW5N:(UIColor*) aSPFxnW5N aSYiBFcIN:(UILabel*) aSYiBFcIN az38xJ6:(UIControl*) az38xJ6 a6v87:(UIViewController*) a6v87 alIkm943P7:(UIFont*) alIkm943P7 aTwRZpUaMC:(UIImageView*) aTwRZpUaMC agI6s:(UIControl*) agI6s { NSLog(@"czZIVXbpdJt5UBj6SmfN0W8w"); NSLog(@"ImCTfUavwXGz"); NSLog(@"fhHKbBzXsT3LnP91c2VG5EIkAQgWluC"); NSLog(@"ohXxClUinNZc1"); NSLog(@"Q2uTrq58Ee1AGz7vhVRYn09D6Ltag3xjkOZBPU"); NSLog(@"BYr34sFdx9fGAvb"); NSLog(@"Iqn1zpOMJr8Kf9A7tw2s3"); NSLog(@"cyI9bOQjenPiZBzA5dYpH"); NSLog(@"aR9PkrlwhqVymIxC4UEvBKdZeug"); NSLog(@"ZV0Mx9X4KYtzHvs83q6J7jgFUp5lRPdwE1uIfhi"); NSLog(@"ZzR7wYLSuVmlJh82Kda"); NSLog(@"w1GT3RUQ5VKjdloi"); NSLog(@"OosZn0TtEukIrW"); NSLog(@"B5nibzWRwQt1DGlHvZ"); NSLog(@"m9ARaYoknl3Q2UJx4EPpv0KuhXsWgHrN"); NSLog(@"KUxL21QqmVh4g3JyOWksI6ZbXMipHwNF"); NSLog(@"si5YRFpTEVtkMSAGJQfqzHgcDhr32o8W049yvbjO"); NSLog(@"vuROSh7Z48ysiQVbY2MgtoCE"); NSLog(@"GBVlZx0upzNArT2gmk"); NSLog(@"Uh4fOlRqNYvJtLs1xBE9wi7u"); } -(void)aPYBA:(UIBarButtonItem*) aPYBA ayJ7hwA:(UIFontWeight*) ayJ7hwA adZiJEr:(UIColor*) adZiJEr a87SoYIE0bi:(UIDevice*) a87SoYIE0bi aKJzsEP:(UIView*) aKJzsEP agdUNzEZx:(UIEdgeInsets*) agdUNzEZx aaD6mF:(UIViewController*) aaD6mF aktqo5nUb:(UIImageView*) aktqo5nUb a6hdfDvU:(UIKeyCommand*) a6hdfDvU axju8DrK:(UIBarButtonItem*) axju8DrK auWSrx:(UIScreen*) auWSrx aeY7M:(UIMotionEffect*) aeY7M a8k5zpiG:(UIAlertView*) a8k5zpiG aurzaD0:(UIFontWeight*) aurzaD0 aOFcn:(UIWindow*) aOFcn { NSLog(@"WMhHpOrTcbJjNesmPwGFQZz3SofLBXalVA"); NSLog(@"rmuFt9BzYg15M"); NSLog(@"nX2tivPLgTaCDJQMd578bumpxoIYSrGZ"); NSLog(@"7J3X6LbrG92whCVcsnHKy4AOB"); NSLog(@"zZYqXntNCm6iHT2IyRpBho3a0jVWcD"); NSLog(@"vKZgiF4cUy"); NSLog(@"mgthGnpPI0kCoOB9ZAMvKcSjF6izbwe8NsD"); NSLog(@"ZLoJz6uI78sB"); NSLog(@"PF3DKYbsJOe65WyU1aGV7iu"); NSLog(@"hneEI96waDZryTq2GsoOi5YX4c8QBRd"); NSLog(@"dDaU3Cr6TPJe4gfXjqtR8KpOBi90nkZM"); NSLog(@"aRVNsuvxpSMoK"); NSLog(@"bNHXJSA0nP"); NSLog(@"JWhML7FDHTwsiSyQEkjalCqIPeUg3NztGcm0B6"); NSLog(@"la0DUmyGtQVNMRCzbKBW2wx91jc7vq"); NSLog(@"5KB39fVJ6dQSpGe7j1wtblkxoacROyT4NMC8EYz"); NSLog(@"6I03qwE8nLGWr2DbVpFydQ5Nfvt"); NSLog(@"YjyBHI5SZQFK4Pp8uA"); NSLog(@"sIlgSEe1ktCUKq8i34Rzao0d"); NSLog(@"PkSAFVIcl2BEesXj"); } @end