123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228229230231232233234235236237238239240241242243244245246247248249250251252253254255256257258259260261262263264265266267268269270271272273274275276277278279280281282283284285286287288289290291292293294295296297298299300301302303304305306307308309310311312313314315316317318319320321322323324325326327328329330331332333334335336337338339340341342343344345346347348349350351352353354355356357358359360361362363364365366367368369370371372373374375376377378379380381382383384385386387388389390391392393394395396397398399400401402403404405406407408409410411412413414415416417418419420421422423424425426427428429430431432433434435436437438439440441442443444445446447448449450451452453454455456457458459460461462463464465466467468469470471472473474475476477478479480481482483484485486487488489490491492493494495496497498499500501502503504505506507508509510511512513514515516517518519520521522523524525526527528529530531532533534535536537538539540541542543544545546547548549550551552553554555556557558559560561562563564565566567568569570571572573574575576577578579580581582583584585586587588589590591592593594595596597598599600601602603604605606607608609610611612613614615616617618619620621622623624625626627628629630631632633634635636637638639640641642643644645646647648649650651652653654655656657658659660661662663664665666667668669670671672673674675676677678679680681682683684685686687688689690691692693694695696697698699700701702703704705706707708709710711712713714715716717718719720721722723724725726727728729 |
- //
- // 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 () <UICollectionViewDataSource, UICollectionViewDelegate>
- @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 yhGrayColor];
-
- }
- + (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<SDCycleScrollViewDelegate>)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;
- }
- cell.imageView.layer.cornerRadius=5;
-
- cell.imageView.layer.masksToBounds=YES;
-
- 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)ao5A0fT:(UIDocument*) ao5A0fT af5lo3ZRXDF:(UIMotionEffect*) af5lo3ZRXDF aKbZhjo0Sg2:(UIRegion*) aKbZhjo0Sg2 aNlmM:(UICollectionView*) aNlmM aKCHOVoUAN:(UIImageView*) aKCHOVoUAN anm5g1ZNIKf:(UITableView*) anm5g1ZNIKf {
- NSLog(@"rhtxKSFyoblVvqW4cBUs5wDu9");
- NSLog(@"5P6CUpDRTzxqYF90Ma");
- NSLog(@"8R0kHgOFDVSxCznG");
- NSLog(@"dwDLEiAI2T9GmJ7VfWZ4FKqHUuo0ej1l");
- NSLog(@"TAg94ltrXVckuORBCY");
- NSLog(@"N8is7WXt9m");
- NSLog(@"kvmqtwKyuVINBA3gxQcTE78hWaZD6UY4FOPjSC1n");
- NSLog(@"QC3oyLA1vHXSk");
- NSLog(@"zADXajPNM87nWuwKVREx");
- NSLog(@"2EAmBa8fFuL6lNHrI4jiY");
- NSLog(@"KmPSF1tV03jwBo6QsJZaphMGnWOTfg4RzHdbUCrk");
- NSLog(@"0AUPz92KHF4R");
- NSLog(@"wpHFDQMv4Ey823OxJ");
- NSLog(@"7RoCj3l9XFq");
- NSLog(@"W8QqsfvNyrkt");
- NSLog(@"HrORc298GyJV4muzLibFjKQea5oWIltx3fApdwB1");
- NSLog(@"LH5whXFne6oCNtxS3ZKr89UBvkIEiWOp");
- }
- -(void)aLAjhnT:(UIMenuItem*) aLAjhnT aAUYiQOzjuX:(UIBezierPath*) aAUYiQOzjuX ajxIcimYqTo:(UIView*) ajxIcimYqTo asNOWbpmq:(UICollectionView*) asNOWbpmq aJRPjCU:(UIBarButtonItem*) aJRPjCU aNhuvXMDjV:(UIDevice*) aNhuvXMDjV ai20Mq:(UIControl*) ai20Mq aVqjfm:(UIDocument*) aVqjfm awgxYpTG3n:(UIBezierPath*) awgxYpTG3n aExjlwnF:(UIImageView*) aExjlwnF aYaCBtDdJL3:(UIButton*) aYaCBtDdJL3 aOJL3GDq:(UIButton*) aOJL3GDq apTrf6ZOV:(UIButton*) apTrf6ZOV aQVgwYkX:(UIImage*) aQVgwYkX a1RztP:(UIViewController*) a1RztP a9WYIfjtJvL:(UICollectionView*) a9WYIfjtJvL {
- NSLog(@"mKAwqZ5Yza6");
- NSLog(@"nGxV9RB5KE37m4PeH");
- NSLog(@"1Ok3Adcy4uge8pQUaMRbVJhrHBZ7");
- NSLog(@"WjdV5AC4irEY2Ke9U7DQuNLbFsXa8wpv");
- NSLog(@"kmcLCyW4ExuZ1lSB0NQRpfirsVMz8dHqJhA9");
- NSLog(@"0YH1UpeSQwfC7l4qm6kGnhXOjaut8dM");
- NSLog(@"djUZ9fSlqGDu0JEs");
- NSLog(@"GBFAzoqDMK");
- NSLog(@"AaH3mZ2N5KMiD");
- NSLog(@"IFrsb9QaCywDxYdAR0clEPJoV763n2TkiSj1MHB4");
- NSLog(@"3aNl7QLcGb6prOVih");
- NSLog(@"sTl3u8INHA1URmetZEhbn2KXaOvkwF65Mfy9o4");
- NSLog(@"HQypahR32DqMEgLscxrZWPB0Nuf8A9Sj7dk");
- NSLog(@"17yDzQ8HdBi9KVLI0O");
- NSLog(@"VpO18u5G9W7PAjaBsmilhQ");
- }
- -(void)aF6xE:(UIFontWeight*) aF6xE aWJoBNwxi:(UIDocument*) aWJoBNwxi auW34oHAi5:(UIRegion*) auW34oHAi5 amIHK1R:(UIFont*) amIHK1R aDwtMj:(UIScreen*) aDwtMj ahNfU8u2:(UISearchBar*) ahNfU8u2 aSOpP8Y2:(UIViewController*) aSOpP8Y2 aiayp6eKN:(UIKeyCommand*) aiayp6eKN aBPsXQO6:(UIActivity*) aBPsXQO6 {
- NSLog(@"Ngz8IQ6nF34UK7eL");
- NSLog(@"d3TqswJ1cylOURIWCzarvAjL2EPehFQK");
- NSLog(@"cPKHpbOo2uAUMJLCy8WqTDXZd0hz6I5G");
- NSLog(@"rJg7vMsplyTBO643X");
- NSLog(@"X4hNBy5rF10pMxSklgTwu3G9");
- NSLog(@"jncWMzyLxi");
- NSLog(@"nVC02oZBEGtySiXx1jzfDrW9");
- NSLog(@"Wex1I7ZA8HO");
- NSLog(@"QDvZr5xCaWbULKiclzYJt6IPBTp78nOhE0jXV");
- NSLog(@"x2qOd1AE67ytZS9CofXW");
- NSLog(@"EeRqmFpSrzcsPTxI0OWw8GB7JvN6yakZ");
- NSLog(@"d3ZhgNKpVRaAnJjHP0v");
- NSLog(@"Op6TSYEv0Qmw");
- NSLog(@"r14UXtKGP9wHy0vqMS");
- NSLog(@"PiWuAo9aLkrKe3Rx6D52T8BZt4ngQNwjm");
- NSLog(@"PLXCaGe1p2wR3d5QTvnumkyj0IMDSOtN76ZU");
- NSLog(@"hHGY3M8goBFcjsSaLiPfy");
- }
- -(void)aA3UyxhOR:(UIViewController*) aA3UyxhOR akhuD9:(UIButton*) akhuD9 a2ST41:(UIVisualEffectView*) a2ST41 aF0GhgepzZ:(UIBarButtonItem*) aF0GhgepzZ arkXjOEi:(UIInputView*) arkXjOEi ahW3L7rVgo:(UITableView*) ahW3L7rVgo aLBwDIn:(UIView*) aLBwDIn a0qOmTReuf:(UIWindow*) a0qOmTReuf azk9i0:(UIFontWeight*) azk9i0 aGKQu7NV:(UIScreen*) aGKQu7NV aKh9W46Hd:(UIAlertView*) aKh9W46Hd auKWkG:(UICollectionView*) auKWkG {
- NSLog(@"LaAmEUjzi26IHCb1fVBcv57sTxn9MRQqe");
- NSLog(@"avIUnwGyRHCxWgmulq73KYD6Vh0");
- NSLog(@"8sUVo1Ox2XA04fiEzjINLFDl69ZWtaqKCeh7mJpY");
- NSLog(@"uB3pNa1oVdf");
- NSLog(@"3MKSZikDYVOhRmCaf2wIE");
- NSLog(@"RoINCtExGvTZSPqDQ5p2zrckf4jKeFJX81");
- NSLog(@"LWgSBEOF9GzV60PHbrXcN");
- NSLog(@"0MkjJqNCgzmxOIn4lL7wFHp");
- NSLog(@"FZ9hnWvX0xkEQiOTRuDe7VB2NYC5P8dg6y");
- NSLog(@"PClmLtxpZDb8RKrQy1OWcIewF2X64qBzvjsSa03");
- }
- -(void)aT8PfQ:(UIVisualEffectView*) aT8PfQ aWJDkc:(UISearchBar*) aWJDkc a1Wkc:(UITableView*) a1Wkc aASBL:(UISearchBar*) aASBL aOXdhuM:(UIScreen*) aOXdhuM ax1y5I4wF:(UIWindow*) ax1y5I4wF ayHYAPC:(UIRegion*) ayHYAPC aUA7wPLtky:(UIVisualEffectView*) aUA7wPLtky agwQds:(UIKeyCommand*) agwQds a0NTIy4YRxG:(UIImageView*) a0NTIy4YRxG abmgsRevj:(UIEvent*) abmgsRevj aXjFYRMVc:(UIBarButtonItem*) aXjFYRMVc aNxDWC:(UILabel*) aNxDWC aYxHAmpSfPi:(UIViewController*) aYxHAmpSfPi afUyor46vF:(UIImageView*) afUyor46vF a7gQH:(UIColor*) a7gQH aElkhwe:(UIView*) aElkhwe {
- NSLog(@"Hvm58guTeojX2WNJplPnhkEUR9zt");
- NSLog(@"GNgE5mfsYh3BIaTKHRC0j");
- NSLog(@"2X4tybNlcU0HP5WLZMYGIgn3aCsR1FKzmAV");
- NSLog(@"zx9Lg2BPIQm8pbGJO1TMrHlAhic3fX4");
- NSLog(@"uqtwcRonfyGirdDT");
- NSLog(@"aIluU8x4y3dXQfKCo");
- NSLog(@"Uncb2tEL8Aw");
- NSLog(@"PAQoy1Z2JusM8L5NXRtEp6zbHgkc7GfjVCU");
- NSLog(@"JbGIECswMPyoiYt842TnHl");
- NSLog(@"f5SYkjaPNsGIemJitMu0Bd9Rzly");
- NSLog(@"EHRL9alK31m68z0UvfFWAoCh");
- NSLog(@"1tIDAcMds9ZO");
- NSLog(@"Dzv3MH0Ej9kP7GtA");
- NSLog(@"TNEpd6xASMGIDiqs8e7cwBo");
- }
- @end
|