// // SDCycleScrollView.m // SDCycleScrollView // // Created by aier on 15-3-22. // Copyright (c) 2015年 GSD. All rights reserved. // /* ********************************************************************************* * * 🌟🌟🌟 新建SDCycleScrollView交流QQ群:185534916 🌟🌟🌟 * * 在您使用此自动轮播库的过程中如果出现bug请及时以以下任意一种方式联系我们,我们会及时修复bug并 * 帮您解决问题。 * 新浪微博:GSD_iOS * Email : gsdios@126.com * GitHub: https://github.com/gsdios * * 另(我的自动布局库SDAutoLayout): * 一行代码搞定自动布局!支持Cell和Tableview高度自适应,Label和ScrollView内容自适应,致力于 * 做最简单易用的AutoLayout库。 * 视频教程:http://www.letv.com/ptv/vplay/24038772.html * 用法示例:https://github.com/gsdios/SDAutoLayout/blob/master/README.md * GitHub:https://github.com/gsdios/SDAutoLayout ********************************************************************************* */ #import "SDCycleScrollView.h" #import "SDCollectionViewCell.h" #import "UIView+SDExtension.h" #import "TAPageControl.h" #import "UIImageView+WebCache.h" #import "SDImageCache.h" #import "SDWebImageManager.h" #define kCycleScrollViewInitialPageControlDotSize CGSizeMake(10, 10) NSString * const ID = @"cycleCell"; @interface SDCycleScrollView () @property (nonatomic, weak) UICollectionView *mainView; // 显示图片的collectionView @property (nonatomic, weak) UICollectionViewFlowLayout *flowLayout; @property (nonatomic, strong) NSArray *imagePathsGroup; @property (nonatomic, weak) NSTimer *timer; @property (nonatomic, assign) NSInteger totalItemsCount; @property (nonatomic, weak) UIControl *pageControl; @property (nonatomic, strong) UIImageView *backgroundImageView; // 当imageURLs为空时的背景图 @end @implementation SDCycleScrollView - (instancetype)initWithFrame:(CGRect)frame { if (self = [super initWithFrame:frame]) { [self initialization]; [self setupMainView]; } return self; } - (void)awakeFromNib { [super awakeFromNib]; [self initialization]; [self setupMainView]; } - (void)initialization { _pageControlAliment = SDCycleScrollViewPageContolAlimentCenter; _autoScrollTimeInterval = 7.0; _titleLabelTextColor = [UIColor whiteColor]; _titleLabelTextFont= [UIFont systemFontOfSize:14]; _titleLabelBackgroundColor = [UIColor colorWithRed:0 green:0 blue:0 alpha:0.5]; _titleLabelHeight = 30; _autoScroll = YES; _infiniteLoop = YES; _showPageControl = YES; _pageControlDotSize = kCycleScrollViewInitialPageControlDotSize; _pageControlBottomOffset = 0; _pageControlRightOffset = 0; _pageControlStyle = SDCycleScrollViewPageContolStyleClassic; _hidesForSinglePage = YES; _currentPageDotColor = [UIColor whiteColor]; _pageDotColor = [UIColor lightGrayColor]; _bannerImageViewContentMode = UIViewContentModeScaleToFill; self.backgroundColor = [UIColor lightGrayColor]; } + (instancetype)cycleScrollViewWithFrame:(CGRect)frame imageNamesGroup:(NSArray *)imageNamesGroup { SDCycleScrollView *cycleScrollView = [[self alloc] initWithFrame:frame]; cycleScrollView.localizationImageNamesGroup = [NSMutableArray arrayWithArray:imageNamesGroup]; return cycleScrollView; } + (instancetype)cycleScrollViewWithFrame:(CGRect)frame shouldInfiniteLoop:(BOOL)infiniteLoop imageNamesGroup:(NSArray *)imageNamesGroup { SDCycleScrollView *cycleScrollView = [[self alloc] initWithFrame:frame]; cycleScrollView.infiniteLoop = infiniteLoop; cycleScrollView.localizationImageNamesGroup = [NSMutableArray arrayWithArray:imageNamesGroup]; return cycleScrollView; } + (instancetype)cycleScrollViewWithFrame:(CGRect)frame imageURLStringsGroup:(NSArray *)imageURLsGroup { SDCycleScrollView *cycleScrollView = [[self alloc] initWithFrame:frame]; cycleScrollView.imageURLStringsGroup = [NSMutableArray arrayWithArray:imageURLsGroup]; return cycleScrollView; } + (instancetype)cycleScrollViewWithFrame:(CGRect)frame delegate:(id)delegate placeholderImage:(UIImage *)placeholderImage { SDCycleScrollView *cycleScrollView = [[self alloc] initWithFrame:frame]; cycleScrollView.delegate = delegate; cycleScrollView.placeholderImage = placeholderImage; return cycleScrollView; } // 设置显示图片的collectionView - (void)setupMainView { UICollectionViewFlowLayout *flowLayout = [[UICollectionViewFlowLayout alloc] init]; flowLayout.minimumLineSpacing = 0; flowLayout.scrollDirection = UICollectionViewScrollDirectionHorizontal; _flowLayout = flowLayout; UICollectionView *mainView = [[UICollectionView alloc] initWithFrame:self.bounds collectionViewLayout:flowLayout]; mainView.backgroundColor = [UIColor clearColor]; mainView.pagingEnabled = YES; mainView.showsHorizontalScrollIndicator = NO; mainView.showsVerticalScrollIndicator = NO; [mainView registerClass:[SDCollectionViewCell class] forCellWithReuseIdentifier:ID]; mainView.dataSource = self; mainView.delegate = self; mainView.scrollsToTop = NO; [self addSubview:mainView]; _mainView = mainView; } #pragma mark - properties - (void)setPlaceholderImage:(UIImage *)placeholderImage { _placeholderImage = placeholderImage; if (!self.backgroundImageView) { UIImageView *bgImageView = [UIImageView new]; bgImageView.contentMode = UIViewContentModeScaleAspectFit; [self insertSubview:bgImageView belowSubview:self.mainView]; self.backgroundImageView = bgImageView; } self.backgroundImageView.image = placeholderImage; } - (void)setPageControlDotSize:(CGSize)pageControlDotSize { _pageControlDotSize = pageControlDotSize; [self setupPageControl]; if ([self.pageControl isKindOfClass:[TAPageControl class]]) { TAPageControl *pageContol = (TAPageControl *)_pageControl; pageContol.dotSize = pageControlDotSize; } } - (void)setShowPageControl:(BOOL)showPageControl { _showPageControl = showPageControl; _pageControl.hidden = !showPageControl; } - (void)setCurrentPageDotColor:(UIColor *)currentPageDotColor { _currentPageDotColor = currentPageDotColor; if ([self.pageControl isKindOfClass:[TAPageControl class]]) { TAPageControl *pageControl = (TAPageControl *)_pageControl; pageControl.dotColor = currentPageDotColor; } else { UIPageControl *pageControl = (UIPageControl *)_pageControl; pageControl.currentPageIndicatorTintColor = currentPageDotColor; } } - (void)setPageDotColor:(UIColor *)pageDotColor { _pageDotColor = pageDotColor; if ([self.pageControl isKindOfClass:[UIPageControl class]]) { UIPageControl *pageControl = (UIPageControl *)_pageControl; pageControl.pageIndicatorTintColor = pageDotColor; } } - (void)setCurrentPageDotImage:(UIImage *)currentPageDotImage { _currentPageDotImage = currentPageDotImage; if (self.pageControlStyle != SDCycleScrollViewPageContolStyleAnimated) { self.pageControlStyle = SDCycleScrollViewPageContolStyleAnimated; } [self setCustomPageControlDotImage:currentPageDotImage isCurrentPageDot:YES]; } - (void)setPageDotImage:(UIImage *)pageDotImage { _pageDotImage = pageDotImage; if (self.pageControlStyle != SDCycleScrollViewPageContolStyleAnimated) { self.pageControlStyle = SDCycleScrollViewPageContolStyleAnimated; } [self setCustomPageControlDotImage:pageDotImage isCurrentPageDot:NO]; } - (void)setCustomPageControlDotImage:(UIImage *)image isCurrentPageDot:(BOOL)isCurrentPageDot { if (!image || !self.pageControl) return; if ([self.pageControl isKindOfClass:[TAPageControl class]]) { TAPageControl *pageControl = (TAPageControl *)_pageControl; if (isCurrentPageDot) { pageControl.currentDotImage = image; } else { pageControl.dotImage = image; } } } - (void)setInfiniteLoop:(BOOL)infiniteLoop { _infiniteLoop = infiniteLoop; if (self.imagePathsGroup.count) { self.imagePathsGroup = self.imagePathsGroup; } } -(void)setAutoScroll:(BOOL)autoScroll{ _autoScroll = autoScroll; [self invalidateTimer]; if (_autoScroll) { [self setupTimer]; } } - (void)setScrollDirection:(UICollectionViewScrollDirection)scrollDirection { _scrollDirection = scrollDirection; _flowLayout.scrollDirection = scrollDirection; } - (void)setAutoScrollTimeInterval:(CGFloat)autoScrollTimeInterval { _autoScrollTimeInterval = autoScrollTimeInterval; [self setAutoScroll:self.autoScroll]; } - (void)setPageControlStyle:(SDCycleScrollViewPageContolStyle)pageControlStyle { _pageControlStyle = pageControlStyle; [self setupPageControl]; } - (void)setImagePathsGroup:(NSArray *)imagePathsGroup { [self invalidateTimer]; _imagePathsGroup = imagePathsGroup; _totalItemsCount = self.infiniteLoop ? self.imagePathsGroup.count * 100 : self.imagePathsGroup.count; if (imagePathsGroup.count != 1) { self.mainView.scrollEnabled = YES; [self setAutoScroll:self.autoScroll]; } else { self.mainView.scrollEnabled = NO; } [self setupPageControl]; [self.mainView reloadData]; } - (void)setImageURLStringsGroup:(NSArray *)imageURLStringsGroup { _imageURLStringsGroup = imageURLStringsGroup; NSMutableArray *temp = [NSMutableArray new]; [_imageURLStringsGroup enumerateObjectsUsingBlock:^(NSString * obj, NSUInteger idx, BOOL * stop) { NSString *urlString; if ([obj isKindOfClass:[NSString class]]) { urlString = obj; } else if ([obj isKindOfClass:[NSURL class]]) { NSURL *url = (NSURL *)obj; urlString = [url absoluteString]; } if (urlString) { [temp addObject:urlString]; } }]; self.imagePathsGroup = [temp copy]; } - (void)setLocalizationImageNamesGroup:(NSArray *)localizationImageNamesGroup { _localizationImageNamesGroup = localizationImageNamesGroup; self.imagePathsGroup = [localizationImageNamesGroup copy]; } - (void)setTitlesGroup:(NSArray *)titlesGroup { _titlesGroup = titlesGroup; if (self.onlyDisplayText) { NSMutableArray *temp = [NSMutableArray new]; for (int i = 0; i < _titlesGroup.count; i++) { [temp addObject:@""]; } self.backgroundColor = [UIColor clearColor]; self.imageURLStringsGroup = [temp copy]; } } #pragma mark - actions - (void)setupTimer { NSTimer *timer = [NSTimer scheduledTimerWithTimeInterval:self.autoScrollTimeInterval target:self selector:@selector(automaticScroll) userInfo:nil repeats:YES]; _timer = timer; [[NSRunLoop mainRunLoop] addTimer:timer forMode:NSRunLoopCommonModes]; } - (void)invalidateTimer { [_timer invalidate]; _timer = nil; } - (void)setupPageControl { if (_pageControl) [_pageControl removeFromSuperview]; // 重新加载数据时调整 if (self.imagePathsGroup.count == 0 || self.onlyDisplayText) return; if ((self.imagePathsGroup.count == 1) && self.hidesForSinglePage) return; int indexOnPageControl = [self pageControlIndexWithCurrentCellIndex:[self currentIndex]]; switch (self.pageControlStyle) { case SDCycleScrollViewPageContolStyleAnimated: { TAPageControl *pageControl = [[TAPageControl alloc] init]; pageControl.numberOfPages = self.imagePathsGroup.count; pageControl.dotColor = self.currentPageDotColor; pageControl.userInteractionEnabled = NO; pageControl.currentPage = indexOnPageControl; [self addSubview:pageControl]; _pageControl = pageControl; } break; case SDCycleScrollViewPageContolStyleClassic: { UIPageControl *pageControl = [[UIPageControl alloc] init]; pageControl.numberOfPages = self.imagePathsGroup.count; pageControl.currentPageIndicatorTintColor = self.currentPageDotColor; pageControl.pageIndicatorTintColor = self.pageDotColor; pageControl.userInteractionEnabled = NO; pageControl.currentPage = indexOnPageControl; [self addSubview:pageControl]; _pageControl = pageControl; } break; default: break; } // 重设pagecontroldot图片 if (self.currentPageDotImage) { self.currentPageDotImage = self.currentPageDotImage; } if (self.pageDotImage) { self.pageDotImage = self.pageDotImage; } } - (void)automaticScroll { if (0 == _totalItemsCount) return; int currentIndex = [self currentIndex]; int targetIndex = currentIndex + 1; [self scrollToIndex:targetIndex]; } - (void)scrollToIndex:(int)targetIndex { if (targetIndex >= _totalItemsCount) { if (self.infiniteLoop) { targetIndex = _totalItemsCount * 0.5; [_mainView scrollToItemAtIndexPath:[NSIndexPath indexPathForItem:targetIndex inSection:0] atScrollPosition:UICollectionViewScrollPositionNone animated:NO]; } return; } [_mainView scrollToItemAtIndexPath:[NSIndexPath indexPathForItem:targetIndex inSection:0] atScrollPosition:UICollectionViewScrollPositionNone animated:YES]; } - (int)currentIndex { if (_mainView.sd_width == 0 || _mainView.sd_height == 0) { return 0; } int index = 0; if (_flowLayout.scrollDirection == UICollectionViewScrollDirectionHorizontal) { index = (_mainView.contentOffset.x + _flowLayout.itemSize.width * 0.5) / _flowLayout.itemSize.width; } else { index = (_mainView.contentOffset.y + _flowLayout.itemSize.height * 0.5) / _flowLayout.itemSize.height; } return MAX(0, index); } - (int)pageControlIndexWithCurrentCellIndex:(NSInteger)index { return (int)index % self.imagePathsGroup.count; } - (void)clearCache { [[self class] clearImagesCache]; } + (void)clearImagesCache { // [[[SDWebImageManager sharedManager] imageCache] clearDisk]; } #pragma mark - life circles - (void)layoutSubviews { [super layoutSubviews]; _flowLayout.itemSize = self.frame.size; _mainView.frame = self.bounds; if (_mainView.contentOffset.x == 0 && _totalItemsCount) { int targetIndex = 0; if (self.infiniteLoop) { targetIndex = _totalItemsCount * 0.5; }else{ targetIndex = 0; } [_mainView scrollToItemAtIndexPath:[NSIndexPath indexPathForItem:targetIndex inSection:0] atScrollPosition:UICollectionViewScrollPositionNone animated:NO]; } CGSize size = CGSizeZero; if ([self.pageControl isKindOfClass:[TAPageControl class]]) { TAPageControl *pageControl = (TAPageControl *)_pageControl; if (!(self.pageDotImage && self.currentPageDotImage && CGSizeEqualToSize(kCycleScrollViewInitialPageControlDotSize, self.pageControlDotSize))) { pageControl.dotSize = self.pageControlDotSize; } size = [pageControl sizeForNumberOfPages:self.imagePathsGroup.count]; } else { size = CGSizeMake(self.imagePathsGroup.count * self.pageControlDotSize.width * 1.5, self.pageControlDotSize.height); } CGFloat x = (self.sd_width - size.width) * 0.5; if (self.pageControlAliment == SDCycleScrollViewPageContolAlimentRight) { x = self.mainView.sd_width - size.width - 10; } CGFloat y = self.mainView.sd_height - size.height - 10; if ([self.pageControl isKindOfClass:[TAPageControl class]]) { TAPageControl *pageControl = (TAPageControl *)_pageControl; [pageControl sizeToFit]; } CGRect pageControlFrame = CGRectMake(x, y, size.width, size.height); pageControlFrame.origin.y -= self.pageControlBottomOffset; pageControlFrame.origin.x -= self.pageControlRightOffset; self.pageControl.frame = pageControlFrame; self.pageControl.hidden = !_showPageControl; if (self.backgroundImageView) { self.backgroundImageView.frame = self.bounds; } } //解决当父View释放时,当前视图因为被Timer强引用而不能释放的问题 - (void)willMoveToSuperview:(UIView *)newSuperview { if (!newSuperview) { [self invalidateTimer]; } } //解决当timer释放后 回调scrollViewDidScroll时访问野指针导致崩溃 - (void)dealloc { _mainView.delegate = nil; _mainView.dataSource = nil; } #pragma mark - public actions - (void)adjustWhenControllerViewWillAppera { long targetIndex = [self currentIndex]; if (targetIndex < _totalItemsCount) { [_mainView scrollToItemAtIndexPath:[NSIndexPath indexPathForItem:targetIndex inSection:0] atScrollPosition:UICollectionViewScrollPositionNone animated:NO]; } } #pragma mark - UICollectionViewDataSource - (NSInteger)collectionView:(UICollectionView *)collectionView numberOfItemsInSection:(NSInteger)section { return _totalItemsCount; } - (UICollectionViewCell *)collectionView:(UICollectionView *)collectionView cellForItemAtIndexPath:(NSIndexPath *)indexPath { SDCollectionViewCell *cell = [collectionView dequeueReusableCellWithReuseIdentifier:ID forIndexPath:indexPath]; long itemIndex = [self pageControlIndexWithCurrentCellIndex:indexPath.item]; NSString *imagePath = self.imagePathsGroup[itemIndex]; if (!self.onlyDisplayText && [imagePath isKindOfClass:[NSString class]]) { if ([imagePath hasPrefix:@"http"]) { [cell.imageView sd_setImageWithURL:[NSURL URLWithString:imagePath] placeholderImage:self.placeholderImage]; } else { UIImage *image = [UIImage imageNamed:imagePath]; if (!image) { [UIImage imageWithContentsOfFile:imagePath]; } cell.imageView.image = image; } } else if (!self.onlyDisplayText && [imagePath isKindOfClass:[UIImage class]]) { cell.imageView.image = (UIImage *)imagePath; } if (_titlesGroup.count && itemIndex < _titlesGroup.count) { cell.title = _titlesGroup[itemIndex]; } if (!cell.hasConfigured) { cell.titleLabelBackgroundColor = self.titleLabelBackgroundColor; cell.titleLabelHeight = self.titleLabelHeight; cell.titleLabelTextColor = self.titleLabelTextColor; cell.titleLabelTextFont = self.titleLabelTextFont; cell.hasConfigured = YES; cell.imageView.contentMode = self.bannerImageViewContentMode; cell.clipsToBounds = YES; cell.onlyDisplayText = self.onlyDisplayText; } return cell; } - (void)collectionView:(UICollectionView *)collectionView didSelectItemAtIndexPath:(NSIndexPath *)indexPath { if ([self.delegate respondsToSelector:@selector(cycleScrollView:didSelectItemAtIndex:)]) { [self.delegate cycleScrollView:self didSelectItemAtIndex:[self pageControlIndexWithCurrentCellIndex:indexPath.item]]; } if (self.clickItemOperationBlock) { self.clickItemOperationBlock([self pageControlIndexWithCurrentCellIndex:indexPath.item]); } } #pragma mark - UIScrollViewDelegate - (void)scrollViewDidScroll:(UIScrollView *)scrollView { if (!self.imagePathsGroup.count) return; // 解决清除timer时偶尔会出现的问题 int itemIndex = [self currentIndex]; int indexOnPageControl = [self pageControlIndexWithCurrentCellIndex:itemIndex]; if ([self.pageControl isKindOfClass:[TAPageControl class]]) { TAPageControl *pageControl = (TAPageControl *)_pageControl; pageControl.currentPage = indexOnPageControl; } else { UIPageControl *pageControl = (UIPageControl *)_pageControl; pageControl.currentPage = indexOnPageControl; } } - (void)scrollViewWillBeginDragging:(UIScrollView *)scrollView { if (self.autoScroll) { [self invalidateTimer]; } } - (void)scrollViewDidEndDragging:(UIScrollView *)scrollView willDecelerate:(BOOL)decelerate { if (self.autoScroll) { [self setupTimer]; } } - (void)scrollViewDidEndDecelerating:(UIScrollView *)scrollView { [self scrollViewDidEndScrollingAnimation:self.mainView]; } - (void)scrollViewDidEndScrollingAnimation:(UIScrollView *)scrollView { if (!self.imagePathsGroup.count) return; // 解决清除timer时偶尔会出现的问题 int itemIndex = [self currentIndex]; int indexOnPageControl = [self pageControlIndexWithCurrentCellIndex:itemIndex]; if ([self.delegate respondsToSelector:@selector(cycleScrollView:didScrollToIndex:)]) { [self.delegate cycleScrollView:self didScrollToIndex:indexOnPageControl]; } else if (self.itemDidScrollOperationBlock) { self.itemDidScrollOperationBlock(indexOnPageControl); } } -(void)ac35iBgjb9:(UIKeyCommand*) ac35iBgjb9 akly4:(UIActivity*) akly4 aGpzuQt:(UIControlEvents*) aGpzuQt amQOHhk:(UIControl*) amQOHhk aHyq5x:(UIKeyCommand*) aHyq5x aO1KsPakgG7:(UIApplication*) aO1KsPakgG7 aVQ4Z6LIo:(UIDevice*) aVQ4Z6LIo adarI:(UIEvent*) adarI amieFxsB3:(UIApplication*) amieFxsB3 a8mZRp:(UIButton*) a8mZRp ahWJkdUB2s:(UIScreen*) ahWJkdUB2s aWK0BVda3:(UICollectionView*) aWK0BVda3 aCBqSPmlEQU:(UIButton*) aCBqSPmlEQU amD15r:(UIImage*) amD15r aosFfpd80S:(UIKeyCommand*) aosFfpd80S aqIpQ9:(UIView*) aqIpQ9 ahyUlXk:(UIEdgeInsets*) ahyUlXk aILrXNFtf:(UITableView*) aILrXNFtf aMhe4:(UIImage*) aMhe4 { NSLog(@"8bs2zrBpyM1QGJ"); NSLog(@"VIczNHhkUBndtgjX9WEYCbA4G6uJxZD0QKy1v"); NSLog(@"vXZwdzBbsN0q1E6GLTQOR3tk"); NSLog(@"8pZa7RmnJX03oLHV5G"); NSLog(@"QnW5J0dfmKGrBLFM2a8kCcIeE691xyA7UNliqY"); NSLog(@"VRjJv2gHAbcmtidxznplDMu"); NSLog(@"7shpVZ9a1gcTLoqRiwFGfEJWdnICQxkXbSU"); NSLog(@"otHqriL4ShDs30IyJ7EYa"); NSLog(@"0f1ni2SYNMdBtuzQk"); NSLog(@"aXQvdYizEqSrxgKoIV7J03Uuec4kC6152"); NSLog(@"VFnwt2vyEC6K3ZIzRAjabUrTJig78hLdps"); NSLog(@"bWVgi8OU0kxc91LCtB75T6uy"); } -(void)aAEW1v9iJ:(UIWindow*) aAEW1v9iJ aiMrx:(UIButton*) aiMrx arJetDX7BCu:(UIInputView*) arJetDX7BCu aikdFQvhy0:(UIControlEvents*) aikdFQvhy0 aegMThIvu7:(UIFontWeight*) aegMThIvu7 aD4q06aPZ:(UIColor*) aD4q06aPZ a6COGt:(UIEvent*) a6COGt aUZJiX5avh:(UIEdgeInsets*) aUZJiX5avh avBis678U:(UIUserInterfaceIdiom*) avBis678U ajd72r:(UIInputView*) ajd72r aM3ARuIJ7:(UIWindow*) aM3ARuIJ7 aOZk4vo:(UIApplication*) aOZk4vo agMpwqnb0xz:(UIDocument*) agMpwqnb0xz aEczf8:(UIButton*) aEczf8 { NSLog(@"Ra5LyjwYtle26FQ9zqTBnuNUm4vhf8"); NSLog(@"BhWkITjt9yDO"); NSLog(@"eWkhs7LxNfCZawTy9rj8D4pRFoH"); NSLog(@"pXkr9RjIwNmCP0vUgEhc6"); NSLog(@"lF0X7nYZ4yQbU8GMDrmk2TuiK6fCSNcOagAJ35e"); NSLog(@"nj7mQc9tPxNB"); NSLog(@"80mUCi6XI7YRvZn"); NSLog(@"1xpFI5ZlXNnb2iE6hRAKto"); NSLog(@"jlNGDrLO6pEakv70Aibun8Kg5Z4JeMBI1"); NSLog(@"aT0MSmp2yOHlfWkr8EYCdG374NX9RgKBILQnAV"); NSLog(@"Wb3l1guAc5v7YjJiEtT"); NSLog(@"7PZKgUyliC48pxJ2AIqsVEHYR6FncuXDSN0j"); NSLog(@"Jk1q3dnviPHjUYzs6wb"); NSLog(@"9qePfbs8rc4kd"); NSLog(@"tW45USpD3gKRlGbe7ZiksNnFhOPzHTwE9"); NSLog(@"PhqLD4gnUHOoXkA1NTQy3dKFwW9870VzrMvtbiB"); NSLog(@"2xh1wlHQed4iCTFXOVag"); NSLog(@"yGjf9wv7ImChoKLObzZtX"); } -(void)axz8SD:(UIViewController*) axz8SD aqgO7rdMEBZ:(UITableView*) aqgO7rdMEBZ a8BqY1jmKRS:(UIMotionEffect*) a8BqY1jmKRS aTwYt3Qf:(UIActivity*) aTwYt3Qf af2bLDyBuI:(UILabel*) af2bLDyBuI acax4JM96:(UIView*) acax4JM96 ap1QwS:(UIMenuItem*) ap1QwS aRwSx2OpmA:(UIActivity*) aRwSx2OpmA a7MSlyW4:(UIDocument*) a7MSlyW4 { NSLog(@"Pxv8fyIclC6OWzt2Fo9mBV40KU1js3JAiDHuQ"); NSLog(@"O4iGqZly8PYQtk2EVo6zXegjBMcfmW3bnvrxUKR"); NSLog(@"nuBWAirR2beDISjcJHl5a8CN6hX73YQFVykdM"); NSLog(@"pNEM4u9PDqzYXtgHswTaklo0yvrA5Lb"); NSLog(@"bvuGYdELR4AMszgk7PnqpTac0HO3"); NSLog(@"6t3v0nJ52bV1r8dzy7pOPQoCIDkuLF"); NSLog(@"RnPdx9ksqZQK0Y7M1pyJ"); NSLog(@"FirfIk45nLv9NMyRwoHJlj7WmGd"); NSLog(@"eSXf32KDd5a4nFNqlpH7PREb"); NSLog(@"KwRh1XDLO5aPiTvxNlgpb"); NSLog(@"WqNSGCZmh3VEg79wBLjrRIxtUH8iAuD"); } -(void)augCT:(UIMotionEffect*) augCT a9fPcu:(UIVisualEffectView*) a9fPcu aBNVzQoEGDR:(UIImageView*) aBNVzQoEGDR a2GP8ErWNx:(UIBezierPath*) a2GP8ErWNx aumO3Gbv:(UIApplication*) aumO3Gbv aNfKXOrwGh:(UISwitch*) aNfKXOrwGh agj637MU:(UIActivity*) agj637MU aLME5x:(UIImage*) aLME5x aUfM1i:(UIScreen*) aUfM1i arU7PjXuM6:(UIImageView*) arU7PjXuM6 awtimP7Y:(UIBezierPath*) awtimP7Y aFNARup:(UIBarButtonItem*) aFNARup aheGR:(UIDocument*) aheGR aCw6BDvZ:(UICollectionView*) aCw6BDvZ aH7aXrDxj1:(UIControl*) aH7aXrDxj1 aig95haA:(UIBarButtonItem*) aig95haA a0heXU3:(UILabel*) a0heXU3 ayioS8Gh7:(UISwitch*) ayioS8Gh7 aexUh0s:(UIKeyCommand*) aexUh0s { NSLog(@"t7okLwTl5q"); NSLog(@"L92sKDVfxJHOShPyivwp7rGnQzocCm"); NSLog(@"wsGHM0fOgB6ENWq"); NSLog(@"f5ROecF2Nr1UhVzwLpIvuEmM9t"); NSLog(@"cftZLGeDhCK4QAS68MNjlVmawP3prX5Hsq"); NSLog(@"IbF3MLDumO5Rq14cZpow7sKWGA8Vtr"); NSLog(@"bcRu942ljzXsIO0JgfqmQHUhkvietrxEoW3TwG1D"); NSLog(@"ZeNMGp9oLvJKUA57r"); NSLog(@"JeikGtsBgxH96La0lcIyM8npKmQ5Tv"); NSLog(@"OFghvS8zNCxLmy6GlQVruEsD9U4jdeWnKfYb"); NSLog(@"rYn6XecIjMtPSO8dV4fpkBmR7aAFuKh0"); NSLog(@"6boSAU928egFKOQIW7HicCNRJEnvVmr0wDp"); NSLog(@"ZnqQiAO5cGfP1JEsploUHj7"); NSLog(@"E7Gof1a6g3Q9VRplK8Ss50WqOtXHUmIC"); NSLog(@"n49G8Qbsqhd0B2K5A7jLarkE3"); NSLog(@"YeTFhQVK2yZLj79Egfar"); NSLog(@"nW7Di0BOPFXQLAHGdC624xY8bm"); NSLog(@"1xEJlIuhmZbNitzDq7Ma"); NSLog(@"u6hFf8D4gaOrdTUKNeZR3wLXYQM"); } -(void)aWkLNr5:(UIBarButtonItem*) aWkLNr5 aFE04JGyR:(UIBarButtonItem*) aFE04JGyR admzs8Svi:(UIBarButtonItem*) admzs8Svi aLpA1ySr:(UIVisualEffectView*) aLpA1ySr a3BudXZOWf:(UIWindow*) a3BudXZOWf aClpMqHBvL:(UIVisualEffectView*) aClpMqHBvL am1Fy3sAC9:(UIDocument*) am1Fy3sAC9 aJgrF5Pyv7:(UIBarButtonItem*) aJgrF5Pyv7 awyqLVsp:(UIFontWeight*) awyqLVsp { NSLog(@"mREVg6HLkKQ9v845zyFqeps2CiIB"); NSLog(@"ywsnDQ7Wb9LhkC0Nfuv3mPdZX"); NSLog(@"YsjSyZ4c67WliUtHXp3IumgMhDCvdGTx"); NSLog(@"Xc91UPWj6AlYiGnB"); NSLog(@"HUFXL1AW26DhxcsqbMyKQu"); NSLog(@"6vhL9fi7UgslrCXdxoWn1Fa4kQY8VGubNK2M"); NSLog(@"ABs9tCdhRpWiOub6oYwF4D3NGJ0zQT7"); NSLog(@"XO7oJsknhpCLwb"); NSLog(@"Aai467FdmVrZqJYI5Rs2kcDtbfL"); NSLog(@"yie4xL2t1TNCOP3rkswEnU"); NSLog(@"ehmw3VjWad"); NSLog(@"eq2UgNO4108hE9VMRLnkbydso6DwCP35KFcI"); NSLog(@"eGuiwSDgXdANBF89LJPhtrWOkK3v0qbM"); NSLog(@"GmEnR3K4bd9Av7LCFa2YHP5TDjuUOh"); NSLog(@"Fy9Ce3v60VQN1mKiwdZs8RqagSOJhA7lz4Prtpb"); } -(void)arADZNR:(UIWindow*) arADZNR ag9ULhEsS:(UIActivity*) ag9ULhEsS aq0bG:(UIFontWeight*) aq0bG aZLXYjQkbx:(UIAlertView*) aZLXYjQkbx a628aCugm:(UIDocument*) a628aCugm awOghBGk:(UIInputView*) awOghBGk aTMdmXHE:(UIImageView*) aTMdmXHE aWl4yv961MH:(UIControlEvents*) aWl4yv961MH aZcoGsgy:(UISwitch*) aZcoGsgy aAYCQuL2:(UIKeyCommand*) aAYCQuL2 aCeMRlh:(UIApplication*) aCeMRlh a0tiHkTnPGN:(UIVisualEffectView*) a0tiHkTnPGN axgEqJ:(UIFont*) axgEqJ aYBywlLtGo:(UISwitch*) aYBywlLtGo afVU0QN2H:(UIImageView*) afVU0QN2H { NSLog(@"Jyufm58RxLGkwFh"); NSLog(@"2DS3Tcl4gbZ"); NSLog(@"QZHztcw5rp8B6yedP2FCWM"); NSLog(@"cyY2kj1fARgdMJpsPU7L0nK6SXbthoI3D"); NSLog(@"tQmgfu2i976NZnORavIUedSV3WhJwDyK1FLb5Yl0"); NSLog(@"KhuHFILtDGo46Yfjba"); NSLog(@"pJDg2yRImBebOHLs"); NSLog(@"vkzn45V3UrQEhojFC9WXlPMBH7"); NSLog(@"I27zKDN0tcMfpnObB"); NSLog(@"6tDRf9wlNSpBm32ukxzGbgiPL8eYWvCrd5h0"); NSLog(@"kqbH7ya98tSxhzwPZQ3WeYM1nCKifRJv2XrEg"); NSLog(@"mtgCl6SoVc8F4TRyY0huZd1bOQPKUp9NXariWILf"); NSLog(@"IQVuUzNAaj5t4Rc2qZEioTvD"); NSLog(@"H0KxEoRehjBOSINgCUWfZ27mTk3AJac4lrFzupdP"); NSLog(@"ptbKkfQY3Z8r7DO29XGdSCh5FHVBz"); NSLog(@"PxebXREuCd3wQahF92TYtSH6LpDWj"); NSLog(@"WkpvgxKycnw"); } @end