轮番图

来源:互联网 发布:南非经济数据 编辑:程序博客网 时间:2024/05/17 23:48
- (void)viewDidLoad {
    [super viewDidLoad];

    // Do any additional setup after loading the view.

    [self addScroll];
    [self addImageView];

    [self loadImages];
    [self addPageControl];
    [self setDefaultImage];//加载默认图片

}


-(void)loadImages{
    self.imagesAry=[[NSMutableArray alloc] init];
    for (HomeADSlide_listModel *model in self.ary) {
        NSString *img_url=model.img_url;
        [self.imagesAry addObject:img_url];
    }
}

-(void)addScroll{
    self.scrollView=[[UIScrollView alloc] initWithFrame:CGRectMake(0, 0, kScreenSize.width, kScreenSize.height/3.79)];
    [self.contentView addSubview:self.scrollView];
    self.scrollView.delegate=self;//设置代理
    self.scrollView.contentSize=CGSizeMake(3*kScreenSize.width, 0);//设置滚动范围
    [self.scrollView setContentOffset:CGPointMake(kScreenSize.width, 0) animated:NO];//设置当前显示的位置为中间图片
    self.scrollView.pagingEnabled=YES;
    self.scrollView.showsHorizontalScrollIndicator=NO;
    self.timer = [NSTimer scheduledTimerWithTimeInterval:3.0f target:self selector:@selector(update:) userInfo:nil repeats:YES];
    //  将定时器添加到主线程
    [[NSRunLoop mainRunLoop] addTimer:self.timer forMode:NSRunLoopCommonModes];
}

- (void)update:(NSTimer *)timer{
    if (_isDragging == YES) {
        return ;
    }
    CGPoint offSet = self.scrollView.contentOffset;
    offSet.x +=offSet.x;
    [self.scrollView setContentOffset:offSet animated:YES];
    if (offSet.x >= kScreenSize.width *2) {
        offSet.x = kScreenSize.width;
    }
}

-(void)addImageView{
    CGRect frame=self.scrollView.frame;
    self.leftImageView=[[UIImageView alloc] initWithFrame:CGRectMake(0, 0, frame.size.width, frame.size.height)];
    self.centerImageView=[[UIImageView alloc] initWithFrame:CGRectMake(frame.size.width, 0, frame.size.width, frame.size.height)];
    self.rightImageView=[[UIImageView alloc] initWithFrame:CGRectMake(2*frame.size.width, 0, frame.size.width, frame.size.height)];
    
    self.leftImageView.userInteractionEnabled=YES;
    self.centerImageView.userInteractionEnabled=YES;
    self.rightImageView.userInteractionEnabled=YES;
    
    UITapGestureRecognizer *leftTap=[[UITapGestureRecognizer alloc] initWithTarget:self action:@selector(tap)];
    UITapGestureRecognizer *centerTap=[[UITapGestureRecognizer alloc] initWithTarget:self action:@selector(tap)];
    UITapGestureRecognizer *rightTap=[[UITapGestureRecognizer alloc] initWithTarget:self action:@selector(tap)];
    [self.leftImageView addGestureRecognizer:leftTap];
    [self.centerImageView addGestureRecognizer:centerTap];
    [self.rightImageView addGestureRecognizer:rightTap];
    
    [self.scrollView addSubview:self.leftImageView];
    [self.scrollView addSubview:self.centerImageView];
    [self.scrollView addSubview:self.rightImageView];
}
-(void)tap{//每张图片的点击事件

//self.currentImageIndex;
 
}

-(void)addPageControl{
    self.pageControl=[[UIPageControl alloc] init];
    //注意:此方法可以根据页数返回UIPageControl合适的大小
    CGSize size=[self.pageControl sizeForNumberOfPages:self.ary.count];
    self.pageControl.bounds=CGRectMake(0, 0, size.width, size.height);
    self.pageControl.center=CGPointMake(kScreenSize.width-(kScreenSize.width/7.0), self.scrollView.frame.size.height-15);
    //self.pageControl.center=CGPointMake(100,100);
    self.pageControl.pageIndicatorTintColor=[UIColor darkGrayColor];
    self.pageControl.currentPageIndicatorTintColor=kUIColorFromRGB(0xb2151c);//设置颜色
    self.pageControl.numberOfPages=self.ary.count;//设置总页数
    [self.superview addSubview:self.pageControl];
}

-(void)setDefaultImage{
    //加载默认图片
    [self.leftImageView sd_setImageWithURL:self.imagesAry[self.imageCount-1] placeholderImage:nil];
    [self.centerImageView sd_setImageWithURL:self.imagesAry[0] placeholderImage:nil];
    [self.rightImageView sd_setImageWithURL:self.imagesAry[1] placeholderImage:nil];
    self.currentImageIndex=0;
    //设置当前页
    self.pageControl.currentPage=self.currentImageIndex;
}

#pragma mark - scrollViewDelegate
-(void)scrollViewWillBeginDragging:(UIScrollView *)scrollView{
    _isDragging = YES;
}

//滚动停止事件
-(void)scrollViewDidEndDecelerating:(UIScrollView *)scrollView{
    //    [self reloadImage];//重新加载图片
    _isDragging = NO;
}

- (void) scrollViewDidScroll:(UIScrollView *)scrollView{
    static int i =1; //   当前展示的是第几张图片
    float offset = self.scrollView.contentOffset.x;
    if (self.rightImageView.image == nil || self.leftImageView.image == nil) {
        //  加载下一个视图
        i == self.imageCount-1 ? 0 : i+1;
        [self.rightImageView sd_setImageWithURL:[NSURL URLWithString:self.imagesAry[i]]];
        // 加载上一个视图
        i==0 ? self.imageCount-1 :i-1;
        [_leftImageView sd_setImageWithURL:[NSURL URLWithString:self.imagesAry[i]]];
    }
    if(offset ==0){
        _centerImageView.image = _leftImageView.image;
        scrollView.contentOffset = CGPointMake(scrollView.bounds.size.width, 0);
        _leftImageView.image = nil;
        if (i == 0) {
            i=self.imageCount-1;
        } else{
            i-=1;
        }
    }
    if (offset == scrollView.bounds.size.width * 2) {
        _centerImageView.image = _rightImageView.image;
        scrollView.contentOffset = CGPointMake(scrollView.bounds.size.width, 0);
        _rightImageView.image = nil;
        if (i == self.imageCount-1) {
            i=0;
        }else{
            i+=1 ;
        }
    }
    if (i==0) {
        self.currentImageIndex=self.imageCount-1;
    } else {
        self.currentImageIndex=i-1;
    }
    self.pageControl.currentPage=self.currentImageIndex;//设置分页
}

0 0
原创粉丝点击