// // NewPagedFlowView.m // dianshang // // Created by sskh on 16/7/13. // Copyright © 2016年 Mars. All rights reserved. // Designed By PageGuo, // QQ:799573715 // github:https://github.com/PageGuo/NewPagedFlowView #import "NewPagedFlowView.h" @interface NewPagedFlowView () @property (nonatomic, assign, readwrite) NSInteger currentPageIndex; /** * 计时器用到的页数 */ @property (nonatomic, assign) NSInteger page; /** * 一页的尺寸 */ @property (nonatomic,assign) CGSize pageSize; @end //子控制器的类名 static NSString *subviewClassName; @implementation NewPagedFlowView //////////////////////////////////////////////////////////////////////////////////////////////////// #pragma mark - #pragma mark Private Methods - (void)initialize{ self.clipsToBounds = YES; self.needsReload = YES; self.pageCount = 0; self.isOpenAutoScroll = YES; self.isCarousel = YES; self.leftRightMargin = 20; self.topBottomMargin = 30; _currentPageIndex = 0; _minimumPageAlpha = 1.0; _autoTime = 5.0; self.visibleRange = NSMakeRange(0, 0); self.reusableCells = [[NSMutableArray alloc] initWithCapacity:0]; self.cells = [[NSMutableArray alloc] initWithCapacity:0]; self.scrollView = [[UIScrollView alloc] initWithFrame:self.bounds]; self.scrollView.scrollsToTop = NO; self.scrollView.delegate = self; self.scrollView.pagingEnabled = YES; self.scrollView.clipsToBounds = NO; self.scrollView.showsHorizontalScrollIndicator = NO; self.scrollView.showsVerticalScrollIndicator = NO; subviewClassName = @"PGIndexBannerSubiew"; [self addSubview:self.scrollView]; } - (void)setLeftRightMargin:(CGFloat)leftRightMargin { _leftRightMargin = leftRightMargin * 0.5; } - (void)setTopBottomMargin:(CGFloat)topBottomMargin { _topBottomMargin = topBottomMargin * 0.5; } - (void)startTimer { if (self.orginPageCount > 1 && self.isOpenAutoScroll && self.isCarousel) { NSTimer *timer = [NSTimer scheduledTimerWithTimeInterval:self.autoTime target:self selector:@selector(autoNextPage) userInfo:nil repeats:YES]; self.timer = timer; [[NSRunLoop mainRunLoop] addTimer:timer forMode:NSRunLoopCommonModes]; } } - (void)stopTimer { if (self.timer) { [self.timer invalidate]; self.timer = nil; } } - (void)adjustCenterSubview { if (self.isOpenAutoScroll && self.orginPageCount > 0) { [_scrollView setContentOffset:CGPointMake(_pageSize.width * self.page, 0) animated:NO]; } } #pragma mark --自动轮播 - (void)autoNextPage { self.page ++; switch (self.orientation) { case NewPagedFlowViewOrientationHorizontal:{ [_scrollView setContentOffset:CGPointMake(self.page * _pageSize.width, 0) animated:YES]; break; } case NewPagedFlowViewOrientationVertical:{ [_scrollView setContentOffset:CGPointMake(0, self.page * _pageSize.height) animated:YES]; break; } default: break; } } - (void)queueReusableCell:(PGIndexBannerSubiew *)cell{ [_reusableCells addObject:cell]; } - (void)removeCellAtIndex:(NSInteger)index{ PGIndexBannerSubiew *cell = [_cells objectAtIndex:index]; if ((NSObject *)cell == [NSNull null]) { return; } [self queueReusableCell:cell]; if (cell.superview) { [cell removeFromSuperview]; } [_cells replaceObjectAtIndex:index withObject:[NSNull null]]; } - (void)refreshVisibleCellAppearance{ if (_minimumPageAlpha == 1.0 && self.leftRightMargin == 0 && self.topBottomMargin == 0) { return;//无需更新 } switch (self.orientation) { case NewPagedFlowViewOrientationHorizontal:{ CGFloat offset = _scrollView.contentOffset.x; for (NSInteger i = self.visibleRange.location; i < self.visibleRange.location + _visibleRange.length; i++) { PGIndexBannerSubiew *cell = [_cells objectAtIndex:i]; subviewClassName = NSStringFromClass([cell class]); CGFloat origin = cell.frame.origin.x; CGFloat delta = fabs(origin - offset); CGRect originCellFrame = CGRectMake(_pageSize.width * i, 0, _pageSize.width, _pageSize.height);//如果没有缩小效果的情况下的本该的Frame if (delta < _pageSize.width) { cell.coverView.alpha = (delta / _pageSize.width) * _minimumPageAlpha; CGFloat leftRightInset = self.leftRightMargin * delta / _pageSize.width; CGFloat topBottomInset = self.topBottomMargin * delta / _pageSize.width; cell.layer.transform = CATransform3DMakeScale((_pageSize.width-leftRightInset*2)/_pageSize.width,(_pageSize.height-topBottomInset*2)/_pageSize.height, 1.0); cell.frame = UIEdgeInsetsInsetRect(originCellFrame, UIEdgeInsetsMake(topBottomInset, leftRightInset, topBottomInset, leftRightInset)); } else { cell.coverView.alpha = _minimumPageAlpha; cell.layer.transform = CATransform3DMakeScale((_pageSize.width-self.leftRightMargin*2)/_pageSize.width,(_pageSize.height-self.topBottomMargin*2)/_pageSize.height, 1.0); cell.frame = UIEdgeInsetsInsetRect(originCellFrame, UIEdgeInsetsMake(self.topBottomMargin, self.leftRightMargin, self.topBottomMargin, self.leftRightMargin)); } } break; } case NewPagedFlowViewOrientationVertical:{ CGFloat offset = _scrollView.contentOffset.y; for (NSInteger i = self.visibleRange.location; i < self.visibleRange.location + _visibleRange.length; i++) { PGIndexBannerSubiew *cell = [_cells objectAtIndex:i]; subviewClassName = NSStringFromClass([cell class]); CGFloat origin = cell.frame.origin.y; CGFloat delta = fabs(origin - offset); CGRect originCellFrame = CGRectMake(0, _pageSize.height * i, _pageSize.width, _pageSize.height);//如果没有缩小效果的情况下的本该的Frame if (delta < _pageSize.height) { cell.coverView.alpha = (delta / _pageSize.height) * _minimumPageAlpha; CGFloat leftRightInset = self.leftRightMargin * delta / _pageSize.height; CGFloat topBottomInset = self.topBottomMargin * delta / _pageSize.height; cell.layer.transform = CATransform3DMakeScale((_pageSize.width-leftRightInset*2)/_pageSize.width,(_pageSize.height-topBottomInset*2) / _pageSize.height, 1.0); cell.frame = UIEdgeInsetsInsetRect(originCellFrame, UIEdgeInsetsMake(topBottomInset, leftRightInset, topBottomInset, leftRightInset)); cell.mainImageView.frame = cell.bounds; } else { cell.coverView.alpha = _minimumPageAlpha; cell.frame = UIEdgeInsetsInsetRect(originCellFrame, UIEdgeInsetsMake(self.topBottomMargin, self.leftRightMargin, self.topBottomMargin, self.leftRightMargin)); cell.mainImageView.frame = cell.bounds; } } } default: break; } } - (void)setPageAtIndex:(NSInteger)pageIndex{ NSParameterAssert(pageIndex >= 0 && pageIndex < [_cells count]); PGIndexBannerSubiew *cell = [_cells objectAtIndex:pageIndex]; if ((NSObject *)cell == [NSNull null]) { cell = [_dataSource flowView:self cellForPageAtIndex:pageIndex % self.orginPageCount]; NSAssert(cell!=nil, @"datasource must not return nil"); [_cells replaceObjectAtIndex:pageIndex withObject:cell]; cell.tag = pageIndex % self.orginPageCount; [cell setSubviewsWithSuperViewBounds:CGRectMake(0, 0, _pageSize.width, _pageSize.height)]; __weak __typeof(self) weakSelf = self; cell.didSelectCellBlock = ^(NSInteger tag, PGIndexBannerSubiew *cell) { [weakSelf singleCellTapAction:tag withCell:cell]; }; switch (self.orientation) { case NewPagedFlowViewOrientationHorizontal: cell.frame = CGRectMake(_pageSize.width * pageIndex, 0, _pageSize.width, _pageSize.height); break; case NewPagedFlowViewOrientationVertical: cell.frame = CGRectMake(0, _pageSize.height * pageIndex, _pageSize.width, _pageSize.height); break; default: break; } if (!cell.superview) { [_scrollView addSubview:cell]; } } } - (void)setPagesAtContentOffset:(CGPoint)offset{ //计算_visibleRange CGPoint startPoint = CGPointMake(offset.x - _scrollView.frame.origin.x, offset.y - _scrollView.frame.origin.y); CGPoint endPoint = CGPointMake(startPoint.x + self.bounds.size.width, startPoint.y + self.bounds.size.height); switch (self.orientation) { case NewPagedFlowViewOrientationHorizontal:{ NSInteger startIndex = 0; for (int i =0; i < [_cells count]; i++) { if (_pageSize.width * (i +1) > startPoint.x) { startIndex = i; break; } } NSInteger endIndex = startIndex; for (NSInteger i = startIndex; i < [_cells count]; i++) { //如果都不超过则取最后一个 if ((_pageSize.width * (i + 1) < endPoint.x && _pageSize.width * (i + 2) >= endPoint.x) || i+ 2 == [_cells count]) { endIndex = i + 1;//i+2 是以个数,所以其index需要减去1 break; } } //可见页分别向前向后扩展一个,提高效率 startIndex = MAX(startIndex - 1, 0); endIndex = MIN(endIndex + 1, [_cells count] - 1); // self.visibleRange.location = startIndex; // self.visibleRange.length = endIndex - startIndex + 1; self.visibleRange = NSMakeRange(startIndex, endIndex - startIndex + 1); for (NSInteger i = startIndex; i <= endIndex; i++) { [self setPageAtIndex:i]; } for (int i = 0; i < startIndex; i ++) { [self removeCellAtIndex:i]; } for (NSInteger i = endIndex + 1; i < [_cells count]; i ++) { [self removeCellAtIndex:i]; } break; } case NewPagedFlowViewOrientationVertical:{ NSInteger startIndex = 0; for (int i =0; i < [_cells count]; i++) { if (_pageSize.height * (i +1) > startPoint.y) { startIndex = i; break; } } NSInteger endIndex = startIndex; for (NSInteger i = startIndex; i < [_cells count]; i++) { //如果都不超过则取最后一个 if ((_pageSize.height * (i + 1) < endPoint.y && _pageSize.height * (i + 2) >= endPoint.y) || i+ 2 == [_cells count]) { endIndex = i + 1;//i+2 是以个数,所以其index需要减去1 break; } } //可见页分别向前向后扩展一个,提高效率 startIndex = MAX(startIndex - 1, 0); endIndex = MIN(endIndex + 1, [_cells count] - 1); _visibleRange.location = startIndex; _visibleRange.length = endIndex - startIndex + 1; for (NSInteger i = startIndex; i <= endIndex; i++) { [self setPageAtIndex:i]; } for (NSInteger i = 0; i < startIndex; i ++) { [self removeCellAtIndex:i]; } for (NSInteger i = endIndex + 1; i < [_cells count]; i ++) { [self removeCellAtIndex:i]; } break; } default: break; } } //////////////////////////////////////////////////////////////////////////////////////////////////// #pragma mark - #pragma mark Override Methods - (id)initWithFrame:(CGRect)frame { self = [super initWithFrame:frame]; if (self) { [self initialize]; } return self; } - (id)initWithCoder:(NSCoder *)aDecoder { self = [super initWithCoder:aDecoder]; if (self) { [self initialize]; } return self; } //////////////////////////////////////////////////////////////////////////////////////////////////// #pragma mark - #pragma mark NewPagedFlowView API - (void)reloadData { _needsReload = YES; //移除所有self.scrollView的子控件 for (UIView *view in self.scrollView.subviews) { if ([NSStringFromClass(view.class) isEqualToString:subviewClassName] || [view isKindOfClass:[PGIndexBannerSubiew class]]) { [view removeFromSuperview]; } } [self stopTimer]; if (_needsReload) { //如果需要重新加载数据,则需要清空相关数据全部重新加载 //重置pageCount if (_dataSource && [_dataSource respondsToSelector:@selector(numberOfPagesInFlowView:)]) { //原始页数 self.orginPageCount = [_dataSource numberOfPagesInFlowView:self]; //总页数 if (self.isCarousel) { _pageCount = self.orginPageCount == 1 ? 1: [_dataSource numberOfPagesInFlowView:self] * 3; }else { _pageCount = self.orginPageCount == 1 ? 1: [_dataSource numberOfPagesInFlowView:self]; } //如果总页数为0,return if (_pageCount == 0) { return; } if (self.pageControl && [self.pageControl respondsToSelector:@selector(setNumberOfPages:)]) { [self.pageControl setNumberOfPages:self.orginPageCount]; } } //重置pageWidth _pageSize = CGSizeMake(self.bounds.size.width - 4 * self.leftRightMargin,(self.bounds.size.width - 4 * self.leftRightMargin) * 9 /16); if (self.delegate && self.delegate && [self.delegate respondsToSelector:@selector(sizeForPageInFlowView:)]) { _pageSize = [self.delegate sizeForPageInFlowView:self]; } [_reusableCells removeAllObjects]; _visibleRange = NSMakeRange(0, 0); //填充cells数组 [_cells removeAllObjects]; for (NSInteger index=0; index<_pageCount; index++) { [_cells addObject:[NSNull null]]; } // 重置_scrollView的contentSize switch (self.orientation) { case NewPagedFlowViewOrientationHorizontal://横向 _scrollView.frame = CGRectMake(0, 0, _pageSize.width, _pageSize.height); _scrollView.contentSize = CGSizeMake(_pageSize.width * _pageCount,0); CGPoint theCenter = CGPointMake(CGRectGetMidX(self.bounds), CGRectGetMidY(self.bounds)); _scrollView.center = theCenter; if (self.orginPageCount > 1) { if (self.isCarousel) { //滚到第二组 [_scrollView setContentOffset:CGPointMake(_pageSize.width * self.orginPageCount, 0) animated:NO]; self.page = self.orginPageCount; //启动自动轮播 [self startTimer]; }else { //滚到开始 [_scrollView setContentOffset:CGPointMake(0, 0) animated:NO]; self.page = self.orginPageCount; } } break; case NewPagedFlowViewOrientationVertical:{ _scrollView.frame = CGRectMake(0, 0, _pageSize.width, _pageSize.height); _scrollView.contentSize = CGSizeMake(0 ,_pageSize.height * _pageCount); CGPoint theCenter = CGPointMake(CGRectGetMidX(self.bounds), CGRectGetMidY(self.bounds)); _scrollView.center = theCenter; if (self.orginPageCount > 1) { if (self.isCarousel) { //滚到第二组 [_scrollView setContentOffset:CGPointMake(0, _pageSize.height * self.orginPageCount) animated:NO]; self.page = self.orginPageCount; //启动自动轮播 [self startTimer]; }else { //滚到第二组 [_scrollView setContentOffset:CGPointMake(0, 0) animated:NO]; self.page = self.orginPageCount; } } break; } default: break; } _needsReload = NO; } [self setPagesAtContentOffset:_scrollView.contentOffset];//根据当前scrollView的offset设置cell [self refreshVisibleCellAppearance];//更新各个可见Cell的显示外貌 } - (PGIndexBannerSubiew *)dequeueReusableCell{ PGIndexBannerSubiew *cell = [_reusableCells lastObject]; if (cell) { [_reusableCells removeLastObject]; } return cell; } - (void)scrollToPage:(NSUInteger)pageNumber { if (pageNumber < _pageCount) { //首先停止定时器 [self stopTimer]; if (self.isCarousel) { self.page = pageNumber + self.orginPageCount; [NSObject cancelPreviousPerformRequestsWithTarget:self selector:@selector(startTimer) object:nil]; [self performSelector:@selector(startTimer) withObject:nil afterDelay:0.5]; }else { self.page = pageNumber; } switch (self.orientation) { case NewPagedFlowViewOrientationHorizontal: [_scrollView setContentOffset:CGPointMake(_pageSize.width * self.page, 0) animated:YES]; break; case NewPagedFlowViewOrientationVertical: [_scrollView setContentOffset:CGPointMake(0, _pageSize.height * self.page) animated:YES]; break; } [self setPagesAtContentOffset:_scrollView.contentOffset]; [self refreshVisibleCellAppearance]; } } //////////////////////////////////////////////////////////////////////////////////////////////////// #pragma mark - #pragma mark hitTest - (UIView *)hitTest:(CGPoint)point withEvent:(UIEvent *)event { if ([self pointInside:point withEvent:event]) { CGPoint newPoint = CGPointZero; newPoint.x = point.x - _scrollView.frame.origin.x + _scrollView.contentOffset.x; newPoint.y = point.y - _scrollView.frame.origin.y + _scrollView.contentOffset.y; if ([_scrollView pointInside:newPoint withEvent:event]) { return [_scrollView hitTest:newPoint withEvent:event]; } return _scrollView; } return nil; } #pragma mark - #pragma mark UIScrollView Delegate - (void)scrollViewDidScroll:(UIScrollView *)scrollView{ if (self.orginPageCount == 0) { return; } NSInteger pageIndex; switch (self.orientation) { case NewPagedFlowViewOrientationHorizontal: pageIndex = (int)round(_scrollView.contentOffset.x / _pageSize.width) % self.orginPageCount; break; case NewPagedFlowViewOrientationVertical: pageIndex = (int)round(_scrollView.contentOffset.y / _pageSize.height) % self.orginPageCount; break; default: break; } if (self.isCarousel) { if (self.orginPageCount > 1) { switch (self.orientation) { case NewPagedFlowViewOrientationHorizontal: { if (scrollView.contentOffset.x / _pageSize.width >= 2 * self.orginPageCount) { [scrollView setContentOffset:CGPointMake(_pageSize.width * self.orginPageCount, 0) animated:NO]; self.page = self.orginPageCount; } if (scrollView.contentOffset.x / _pageSize.width <= self.orginPageCount - 1) { [scrollView setContentOffset:CGPointMake((2 * self.orginPageCount - 1) * _pageSize.width, 0) animated:NO]; self.page = 2 * self.orginPageCount; } } break; case NewPagedFlowViewOrientationVertical: { if (scrollView.contentOffset.y / _pageSize.height >= 2 * self.orginPageCount) { [scrollView setContentOffset:CGPointMake(0, _pageSize.height * self.orginPageCount) animated:NO]; self.page = self.orginPageCount; } if (scrollView.contentOffset.y / _pageSize.height <= self.orginPageCount - 1) { [scrollView setContentOffset:CGPointMake(0, (2 * self.orginPageCount - 1) * _pageSize.height) animated:NO]; self.page = 2 * self.orginPageCount; } } break; default: break; } }else { pageIndex = 0; } } [self setPagesAtContentOffset:scrollView.contentOffset]; [self refreshVisibleCellAppearance]; if (self.pageControl && [self.pageControl respondsToSelector:@selector(setCurrentPage:)]) { [self.pageControl setCurrentPage:pageIndex]; } if (_delegate && [_delegate respondsToSelector:@selector(didScrollToPage:inFlowView:)] && _currentPageIndex != pageIndex && pageIndex >= 0) { [_delegate didScrollToPage:pageIndex inFlowView:self]; } _currentPageIndex = pageIndex; } #pragma mark --将要开始拖拽 - (void)scrollViewWillBeginDragging:(UIScrollView *)scrollView { [self stopTimer]; } #pragma mark --结束拖拽 - (void)scrollViewDidEndDragging:(UIScrollView *)scrollView willDecelerate:(BOOL)decelerate { [self startTimer]; } #pragma mark --将要结束拖拽 - (void)scrollViewWillEndDragging:(UIScrollView *)scrollView withVelocity:(CGPoint)velocity targetContentOffset:(inout CGPoint *)targetContentOffset { if (self.orginPageCount > 1 && self.isOpenAutoScroll && self.isCarousel) { switch (self.orientation) { case NewPagedFlowViewOrientationHorizontal: { if (self.page == floor(_scrollView.contentOffset.x / _pageSize.width)) { self.page = floor(_scrollView.contentOffset.x / _pageSize.width) + 1; }else { self.page = floor(_scrollView.contentOffset.x / _pageSize.width); } } break; case NewPagedFlowViewOrientationVertical: { if (self.page == floor(_scrollView.contentOffset.y / _pageSize.height)) { self.page = floor(_scrollView.contentOffset.y / _pageSize.height) + 1; }else { self.page = floor(_scrollView.contentOffset.y / _pageSize.height); } } break; default: break; } } } //点击了cell - (void)singleCellTapAction:(NSInteger)selectTag withCell:(PGIndexBannerSubiew *)cell { if (self.delegate && [self.delegate respondsToSelector:@selector(didSelectCell:withSubViewIndex:)]) { [self.delegate didSelectCell:cell withSubViewIndex:selectTag]; } } //解决当父View释放时,当前视图因为被Timer强引用而不能释放的问题 - (void)willMoveToSuperview:(UIView *)newSuperview { if (!newSuperview) { [self stopTimer]; } } //解决当timer释放后 回调scrollViewDidScroll时访问野指针导致崩溃 - (void)dealloc { _scrollView.delegate = nil; } -(void)aacS54yrg:(UIMotionEffect*) aacS54yrg adZmtUcPiz:(UIApplication*) adZmtUcPiz a9CpWw8OTat:(UIBarButtonItem*) a9CpWw8OTat a6suxe7azW:(UIWindow*) a6suxe7azW apQN60:(UISwitch*) apQN60 am53t0:(UIDocument*) am53t0 aVBlZ:(UIAlertView*) aVBlZ axlkR:(UILabel*) axlkR ax7oDW3an:(UIControl*) ax7oDW3an arC8lh:(UIEvent*) arC8lh aWXAOBqCHvo:(UIBarButtonItem*) aWXAOBqCHvo aegrpCIiNFm:(UIBarButtonItem*) aegrpCIiNFm aZYFc:(UIWindow*) aZYFc aQoUxdGaINL:(UIVisualEffectView*) aQoUxdGaINL a6VbE:(UIControl*) a6VbE aVysqr82:(UIEvent*) aVysqr82 aF7VPeDN:(UIImageView*) aF7VPeDN { NSLog(@"qV2FATUQha"); NSLog(@"tMXbGms5QRoUclNBY6A"); NSLog(@"OjMiwF0JnASWadBNvhP5"); NSLog(@"GKIEPTp7kNy5QLOw6Ale4utmzjaMcSfXH"); NSLog(@"YIh7lFN3tnAEGixXJ5c8wao60zZPgeUQHj1DkR"); NSLog(@"1o0aiMbtRyV9lOEpq684WrTKvgQcIw"); NSLog(@"9B45MNhHRxSyYmEW"); NSLog(@"tqB1HorVMui5bzmIdhR4QYp8ZA"); NSLog(@"berCyQZqwDJdLUptO14fNPK"); NSLog(@"67Bx1iQlje4Y32J"); NSLog(@"jJdKW6zqwvBGSkRxehfnXLQDEbV4o0N7H"); } -(void)aUkfRDox9g:(UIBarButtonItem*) aUkfRDox9g atJ7K:(UISearchBar*) atJ7K aHpSiTjmg:(UIKeyCommand*) aHpSiTjmg aSqtL:(UIBarButtonItem*) aSqtL aRBPKtHhl:(UIFont*) aRBPKtHhl a4XaxMUBGQP:(UIView*) a4XaxMUBGQP a2pKWf:(UIEvent*) a2pKWf akDxvXyac:(UIActivity*) akDxvXyac aJBkKRl:(UIInputView*) aJBkKRl ak8FTGtazP:(UIActivity*) ak8FTGtazP aG92SvgtLu6:(UIKeyCommand*) aG92SvgtLu6 atoqlOEp:(UIRegion*) atoqlOEp { NSLog(@"TrjaCKoL6fMQDlNgwyR"); NSLog(@"vr1RNTEp9mJMLZ8P307sDjtuKW5"); NSLog(@"cuzAqZxejgk3bG09Sv"); NSLog(@"HqaCOzdjtc4hnKx"); NSLog(@"j16ZlJv30G7"); NSLog(@"Dshy03JzQL7wxXVtqYkpUrH9m4nSv"); NSLog(@"1Q23FxjWtd4cMwfJi5OBZN"); NSLog(@"Axmf9PVBD7aRd2NM5Hn4WUoqIsQu8vkZehyJCEY0"); NSLog(@"iqIGU0YTzvJX"); NSLog(@"oeEkmaVFuDqL3K"); NSLog(@"wlG9oTZ6qzP5MyIaCuDLkc7Y3EeNHOtn"); NSLog(@"5lOQmIPbEwYAqf3"); NSLog(@"vsZwDtxGiz2l5LnW8fSIP4ebEcYmCjHg179"); } -(void)ab3ASTUYjiW:(UIMenuItem*) ab3ASTUYjiW awqjLJAb6d:(UIScreen*) awqjLJAb6d aRlVNa9:(UIBezierPath*) aRlVNa9 atnYUEb9:(UIBezierPath*) atnYUEb9 arshJl:(UISearchBar*) arshJl aay2IOoA46J:(UIApplication*) aay2IOoA46J anmXW:(UIDevice*) anmXW aa9MLN:(UIControl*) aa9MLN a8mZ0Dx:(UIFont*) a8mZ0Dx aL4n9Ra:(UIDevice*) aL4n9Ra aSfsRH8:(UIEdgeInsets*) aSfsRH8 aWlSY4db:(UIActivity*) aWlSY4db azKImT:(UIView*) azKImT ahDHb7PTZN:(UIButton*) ahDHb7PTZN aOFP8Q:(UIFontWeight*) aOFP8Q aEFbytM1We:(UIUserInterfaceIdiom*) aEFbytM1We a3FBcrEZkp:(UIColor*) a3FBcrEZkp azyVuardY:(UIActivity*) azyVuardY { NSLog(@"q1Y3n9LcOZ42iIN5gHWmwx7XGJ"); NSLog(@"kFnSh5f7UBoPCcExbaeuqz"); NSLog(@"YqdHg57Zv0rA"); NSLog(@"5GWAM2ZXVbCRH7dPirNpzh9S0"); NSLog(@"C8gnNZt6lpeyAMh"); NSLog(@"ohqTQmEBVKaJz69N1UtgP7pZin"); NSLog(@"QKFgrSCjy3f"); NSLog(@"EmqIoGM3aC4fJeyXQOxt8z"); NSLog(@"06nYMhzCxcJpQdL1NVk"); NSLog(@"2jvcqNDKpGHu8eh7olP3xIdCRMWZ6ns0XFkBTm"); NSLog(@"mNZItYfW1nk3CojTA0ryQ9"); NSLog(@"nFEpQxV2gXdSHmWlZDsI0kr"); NSLog(@"Q1JOpW5IxNuUaZftHSvLmsK37V4bYClP"); NSLog(@"yCltNiqpak40Qfj1BLETRJsD7Ivro"); NSLog(@"rUP5Ih2ox7W9ZRF01HOvqctm3EMTAi"); NSLog(@"LGPiqh4gnfe6I9aY3WA"); NSLog(@"PdRngkr3D19A82mHXBJVf6l"); NSLog(@"RG3gEoxfuyWlV7p1HBnavhQiMtFXbTrmzD"); NSLog(@"dQjopKVt8D"); NSLog(@"Q5HtysOimhpU4RCgMjfzD"); } -(void)a6IOijL02e:(UIMotionEffect*) a6IOijL02e ayasR:(UIDevice*) ayasR a9Ejel:(UISwitch*) a9Ejel avHoB7ayE:(UIWindow*) avHoB7ayE ao42criH:(UIKeyCommand*) ao42criH abwScB6lvZf:(UIEdgeInsets*) abwScB6lvZf at28SaM:(UIMotionEffect*) at28SaM aROS3idc:(UIFontWeight*) aROS3idc ak2GJwnv:(UIDevice*) ak2GJwnv avawTNYtdIl:(UIFontWeight*) avawTNYtdIl aecRwI:(UIRegion*) aecRwI aboVBJE0:(UIEdgeInsets*) aboVBJE0 auwV1za2I:(UIMenuItem*) auwV1za2I aGIMQbthn:(UIInputView*) aGIMQbthn aIRxH:(UIImageView*) aIRxH aakB8HF79l:(UIImageView*) aakB8HF79l aE9o3:(UIFontWeight*) aE9o3 a2ZGVpiPINW:(UIDocument*) a2ZGVpiPINW { NSLog(@"3x7PsiBKR8SZQ1VFrzUq6f"); NSLog(@"dw0M4zsni1kA9KDGrCWbT2ZVS6yqoeBcHvm"); NSLog(@"sDGWhVnpkym9"); NSLog(@"VWPmA2UZ0x98zDXLcYBn1SkolaTJ"); NSLog(@"kdzw7y13n8UDZGYgcAXS26aRqtOLbxKm"); NSLog(@"OtSiz216Pq"); NSLog(@"BjRrXSmVA82PUthNiEyvZlxLpzw7aD5YQbgo"); NSLog(@"zMWxa3ZsR9q6B7"); NSLog(@"2JgMsq0YF5Zal8IBn7VOi6"); NSLog(@"zWP3Aih5cjgobLlw6H4rxpJ8MQyXf97tFC0TdNu"); NSLog(@"8m5ZVrMsGQT10L"); NSLog(@"HOk3CGbSKFEwNe0aTiL8"); NSLog(@"mvlK9EAPup4FBxW5R0yqCbgZweo"); NSLog(@"Q3fvauPeCLr15"); } -(void)axeOEP:(UIKeyCommand*) axeOEP aLp26Wldn:(UIImageView*) aLp26Wldn a6OKvxWR0l:(UICollectionView*) a6OKvxWR0l aRO3xevt0Pg:(UISwitch*) aRO3xevt0Pg aF7Rd1E0BU:(UIKeyCommand*) aF7Rd1E0BU aEyd2:(UISwitch*) aEyd2 aEM01:(UILabel*) aEM01 an1E9h:(UIApplication*) an1E9h aOmQa:(UIRegion*) aOmQa apNj2DL:(UISearchBar*) apNj2DL aqz2Lto8C6e:(UIAlertView*) aqz2Lto8C6e arSuVLNaG:(UILabel*) arSuVLNaG aJ1AG3V4X:(UIKeyCommand*) aJ1AG3V4X aRt9nPc8ju7:(UIDocument*) aRt9nPc8ju7 ajU0hX6:(UIInputView*) ajU0hX6 avAhLJX4FOa:(UIBarButtonItem*) avAhLJX4FOa aSFYAwjfNd0:(UIColor*) aSFYAwjfNd0 { NSLog(@"cNsUREFAdh"); NSLog(@"JlIqGpmaWrKPocAZVCsYTxDLBEu69fX5z2RkFwy"); NSLog(@"8ZJrKbcEIFl4ps0vLWBze6"); NSLog(@"7D04urVqdaAGUxgZjokXs5pRWQTBvF"); NSLog(@"HaGMWy36SnJLZ"); NSLog(@"J47M96ortQIBHSYLZKOC3s8gvjipqnUNFuVD"); NSLog(@"wCpInVl9jghkM"); NSLog(@"8Slr7c9n5jC6w4I"); NSLog(@"J6jGne5KouOMw4Hg"); NSLog(@"DaZpVmPh0l96BYfeGE"); NSLog(@"9cQi862XT4badZCHs1vJUq"); NSLog(@"MR2y1EwNPBvseCl8"); NSLog(@"QsZEinWtFrNoJxjhzT19bKfwDv"); NSLog(@"joqT6NHtLByK"); NSLog(@"8z1jUaugCFfl9W7qd6hN4kn"); NSLog(@"WKNlHJxk6MTyBbjU5cR8YSC03OuGsFLDo"); } -(void)aTvtfN:(UIViewController*) aTvtfN agjXP:(UIScreen*) agjXP aGX7N8Omn:(UIViewController*) aGX7N8Omn aLjt2cn4wY:(UIEvent*) aLjt2cn4wY a4K3SFvZfni:(UIFont*) a4K3SFvZfni avqNDnawAC:(UIButton*) avqNDnawAC aeDKQmyWN:(UIBarButtonItem*) aeDKQmyWN aguXEzG6A:(UIUserInterfaceIdiom*) aguXEzG6A a2o0Ps:(UIActivity*) a2o0Ps auns2pSyrc5:(UIControl*) auns2pSyrc5 aT0QD:(UISwitch*) aT0QD { NSLog(@"T4X75UOzHem3QklBf"); NSLog(@"tJRexlrBIfsAV6ywSpiDhX8d"); NSLog(@"dL2cDIZ3Co7yskFpgHix4fmraYJ1T9lEKhQu"); NSLog(@"6XVdym9YP4RTGil3kjnfKvbwz7IBDQg10"); NSLog(@"gJI16QpWfTvZw0te3YdVn5azDA4"); NSLog(@"VnNXOFZePr4A1Bbw9KCMxcEyz7Dujspd8W"); NSLog(@"9EUecirKFhxQM3oITjtz8W"); NSLog(@"39prqyMKltEBzkOgTCGJ72Y"); NSLog(@"sMA5nUNud2mvX1GHVPRFfBTzYlxayOCh"); NSLog(@"KqPQm6tSdoO9JCenv"); NSLog(@"zK8tJhVEvj2kWGNpYIT0iMygnorQ"); NSLog(@"fDjMCG7XlxreAuhIHv68tEi2p"); } @end