您的位置:首页 > 移动开发 > IOS开发

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

2015-07-28 10:42 337 查看
#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:[imagesURLArray
objectAtIndex:i]] ];

        

        
        [_scrollViewaddSubview:oneImageView];

        
    }

    

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

    
   UIImageView *zeroImage = [[UIImageViewalloc]initWithFrame:CGRectMake(0,0,
self.frame.size.width,self.frame.size.height)];
    [zeroImagesd_setImageWithURL:[NSURLURLWithString:[imagesURLArray
objectAtIndex: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:[imagesURLArray
objectAtIndex: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页
    }
   else
if (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
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: