iOS 添加滚动scrollView自动滚动广告页

来源:互联网 发布:室内效果图设计软件 编辑:程序博客网 时间:2024/05/12 17:05

#import "BannerCollectionCell.h"

#import "UIImageView+WebCache.h"

@implementation BannerCollectionCell


-(void)awakeFromNib

{

    

}

-(id)initWithFrame:(CGRect)frame

{

   if (self == [superinitWithFrame:frame])

    {

       //定时器循环

        [NSTimerscheduledTimerWithTimeInterval:5target:selfselector:@selector(runTimePage)userInfo:nilrepeats:YES];

        

    }

    

    return self;

    

}

- (void)addImages:(NSArray *)imagesURLArray

{

    

   for (UIView *subViewin_scrollView.subviews)

    {

        

        [subViewremoveFromSuperview];

        

    }

    

   self.arrayCount = imagesURLArray.count;

    

    

    _scrollView = [[UIScrollViewalloc]initWithFrame:CGRectMake(0,0,self.frame.size.width,self.frame.size.height)];

    

    _scrollView.pagingEnabled =YES;

    _scrollView.showsVerticalScrollIndicator =NO;

    _scrollView.showsHorizontalScrollIndicator =NO;

    

   

   _scrollView.delegate =self;

    [selfaddSubview:_scrollView];

   UITapGestureRecognizer *tapGesture = [[UITapGestureRecognizeralloc]initWithTarget:selfaction:@selector(tapBannerImage:)];

    

    

    [_scrollViewaddGestureRecognizer:tapGesture];

    

   for (int i =0 ; i < imagesURLArray.count; i++)

    {

       UIImageView *oneImageView = [[UIImageViewalloc]initWithFrame:CGRectMake((i+1) *self.frame.size.width,0,self.frame.size.width,self.frame.size.height)];

        

        [oneImageView sd_setImageWithURL:[NSURLURLWithString:[imagesURLArrayobjectAtIndex:i]] ];

        

        

        [_scrollViewaddSubview:oneImageView];

        

    }

    

    //取数组最后一张图片放在第0

    

   UIImageView *zeroImage = [[UIImageViewalloc]initWithFrame:CGRectMake(0,0,self.frame.size.width,self.frame.size.height)];

    [zeroImagesd_setImageWithURL:[NSURLURLWithString:[imagesURLArrayobjectAtIndex:imagesURLArray.count-1]]];

    

    [_scrollViewaddSubview:zeroImage];

    

    

    //取数组第一张图片放在最后1

    

   UIImageView *firstImage = [[UIImageViewalloc]initWithFrame:CGRectMake(self.frame.size.width*(imagesURLArray.count+1),0,self.frame.size.width,self.frame.size.height)];

    [firstImagesd_setImageWithURL:[NSURLURLWithString:[imagesURLArrayobjectAtIndex:0]]];

    

    [_scrollViewaddSubview:firstImage];

    

    

     _scrollView.contentSize =CGSizeMake(self.frame.size.width * (imagesURLArray.count+2),self.frame.size.height);

    

    [_scrollViewsetContentOffset:CGPointMake(0,0)];

    [_scrollViewscrollRectToVisible:CGRectMake(self.frame.size.width,0,self.frame.size.width,self.frame.size.height)animated:NO];


    

   CGFloat pageControlWith =30 *imagesURLArray.count;

   CGFloat pageControlHeight =30;

    

   

    

   _bannerPageControl = [[UIPageControlalloc]initWithFrame:CGRectMake(CGRectGetWidth(_scrollView.frame)/2 - pageControlWith/2, CGRectGetHeight(_scrollView.frame) - pageControlHeight, pageControlWith, pageControlHeight)];

    

    _bannerPageControl.currentPage =0;

    

    

   _bannerPageControl.numberOfPages = imagesURLArray.count;

    _bannerPageControl.currentPageIndicatorTintColor = [UIColorblackColor];

    _bannerPageControl.pageIndicatorTintColor = [UIColordarkGrayColor];

    

    

    

    [_bannerPageControladdTarget:selfaction:@selector(turnPage)forControlEvents:UIControlEventValueChanged];

    

    [selfaddSubview:_bannerPageControl];

    

    

}


- (void)tapBannerImage:(UITapGestureRecognizer*)tap

{

    NSInteger x = _scrollView.contentOffset.x/SCREEN_WIDTH;

    

   if ([self.tapDelegaterespondsToSelector:@selector(tapImageWithtag:)])

    {

        

        [self.tapDelegatetapImageWithtag:x];

    }

}



- (void)scrollViewDidScroll:(UIScrollView *)sender

{

    NSInteger index = (_scrollView.contentOffset.x/CGRectGetWidth(_scrollView.frame));

    index -- ;

    _bannerPageControl.currentPage = index;

}


-(void)scrollViewDidEndDecelerating:(UIScrollView *)scrollView

{

   NSInteger index = (_scrollView.contentOffset.x/CGRectGetWidth(scrollView.frame));

    

    

   

   if (index==0)

    {

        [_scrollViewscrollRectToVisible:CGRectMake(self.frame.size.width * self.arrayCount,0,self.frame.size.width,self.frame.size.height)animated:NO];//序号0最后1

    }

   elseif (index==(self.arrayCount+1))

    {

        [_scrollViewscrollRectToVisible:CGRectMake(self.frame.size.width,0,self.frame.size.width,self.frame.size.height)animated:NO];//最后+1,循环第1

    }


    

    

    

    _bannerPageControl.currentPage = index;

    [_bannerPageControlupdateCurrentPageDisplay];

}



// pagecontrol 选择器的方法

- (void)turnPage

{

    NSInteger page =_bannerPageControl.currentPage;//获取当前的page

    [_scrollViewscrollRectToVisible:CGRectMake(self.frame.size.width*(page+1),0,self.frame.size.width,self.frame.size.height)animated:YES];//触摸pagecontroller那个点点往后翻一页 +1

}

// 定时器 绑定的方法

- (void)runTimePage

{

    

    NSLog(@"0000000");

    NSInteger page =_bannerPageControl.currentPage;//获取当前的page

    page++;

    page = page > (self.arrayCount -1) ?0 : page ;

    

    _bannerPageControl.currentPage = page;


    [selfturnPage];

}






@end

0 0
原创粉丝点击