From 7b02207537d35bfa1714bf8beafc921f717d100a Mon Sep 17 00:00:00 2001 From: 单军华 Date: Wed, 11 Jul 2018 10:47:42 +0800 Subject: [PATCH] 首次上传 --- screendisplay/Pods/SDCycleScrollView/SDCycleScrollView/Lib/SDCycleScrollView/SDCycleScrollView.m | 693 +++++++++++++++++++++++++++++++++++++++++++++++++++++++++ 1 files changed, 693 insertions(+), 0 deletions(-) diff --git a/screendisplay/Pods/SDCycleScrollView/SDCycleScrollView/Lib/SDCycleScrollView/SDCycleScrollView.m b/screendisplay/Pods/SDCycleScrollView/SDCycleScrollView/Lib/SDCycleScrollView/SDCycleScrollView.m new file mode 100755 index 0000000..9ccd0ec --- /dev/null +++ b/screendisplay/Pods/SDCycleScrollView/SDCycleScrollView/Lib/SDCycleScrollView/SDCycleScrollView.m @@ -0,0 +1,693 @@ +// +// 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 "SDWebImageManager.h" +#import "UIImageView+WebCache.h" + +#define kCycleScrollViewInitialPageControlDotSize CGSizeMake(10, 10) + +NSString * const ID = @"SDCycleScrollViewCell"; + +@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 = 2.0; + _titleLabelTextColor = [UIColor whiteColor]; + _titleLabelTextFont= [UIFont systemFontOfSize:14]; + _titleLabelBackgroundColor = [UIColor colorWithRed:0 green:0 blue:0 alpha:0.5]; + _titleLabelHeight = 30; + _titleLabelTextAlignment = NSTextAlignmentLeft; + _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<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)setDelegate:(id<SDCycleScrollViewDelegate>)delegate +{ + _delegate = delegate; + + if ([self.delegate respondsToSelector:@selector(customCollectionViewCellClassForCycleScrollView:)] && [self.delegate customCollectionViewCellClassForCycleScrollView:self]) { + [self.mainView registerClass:[self.delegate customCollectionViewCellClassForCycleScrollView:self] forCellWithReuseIdentifier:ID]; + }else if ([self.delegate respondsToSelector:@selector(customCollectionViewCellNibForCycleScrollView:)] && [self.delegate customCollectionViewCellNibForCycleScrollView:self]) { + [self.mainView registerNib:[self.delegate customCollectionViewCellNibForCycleScrollView:self] forCellWithReuseIdentifier:ID]; + } +} + +- (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) { // ������ !=1 ������count == 0��������� + self.mainView.scrollEnabled = YES; + [self setAutoScroll:self.autoScroll]; + } else { + self.mainView.scrollEnabled = NO; + [self invalidateTimer]; + } + + [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]; + } +} + +- (void)disableScrollGesture { + self.mainView.canCancelContentTouches = NO; + for (UIGestureRecognizer *gesture in self.mainView.gestureRecognizers) { + if ([gesture isKindOfClass:[UIPanGestureRecognizer class]]) { + [self.mainView removeGestureRecognizer:gesture]; + } + } +} + +#pragma mark - actions + +- (void)setupTimer +{ + [self invalidateTimer]; // ������������������������������������������������������������������������������������������������ + + 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] clearDiskOnCompletion:nil]; +} + +#pragma mark - life circles + +- (void)layoutSubviews +{ + self.delegate = self.delegate; + + [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]; + + if ([self.delegate respondsToSelector:@selector(setupCustomCell:forIndex:cycleScrollView:)] && + [self.delegate respondsToSelector:@selector(customCollectionViewCellClassForCycleScrollView:)] && [self.delegate customCollectionViewCellClassForCycleScrollView:self]) { + [self.delegate setupCustomCell:cell forIndex:itemIndex cycleScrollView:self]; + return cell; + }else if ([self.delegate respondsToSelector:@selector(setupCustomCell:forIndex:cycleScrollView:)] && + [self.delegate respondsToSelector:@selector(customCollectionViewCellNibForCycleScrollView:)] && [self.delegate customCollectionViewCellNibForCycleScrollView:self]) { + [self.delegate setupCustomCell:cell forIndex:itemIndex cycleScrollView:self]; + return cell; + } + + 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) { + 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.titleLabelTextAlignment = self.titleLabelTextAlignment; + 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)makeScrollViewScrollToIndex:(NSInteger)index{ + if (self.autoScroll) { + [self invalidateTimer]; + } + if (0 == _totalItemsCount) return; + + [self scrollToIndex:(int)(_totalItemsCount * 0.5 + index)]; + + if (self.autoScroll) { + [self setupTimer]; + } +} + +@end -- Gitblit v1.8.0