图片轮播器

来源:互联网 发布:1521端口入侵 编辑:程序博客网 时间:2024/06/06 03:02

代码如下:

@interface ViewController ()<UIScrollViewDelegate>

@property (weak,nonatomic) IBOutletUIScrollView *scrollView;

@property (weak,nonatomic) IBOutletUIPageControl *pageController;


@property (nonatomic,strong)NSTimer *time;


@end


@implementation ViewController


- (void)viewDidLoad {

    [superviewDidLoad];

    

    /**

     *切记要加上代理

     * 也可以在xib直接拉线和tableview类似

     */

    self.scrollView.delegate  =self;

    //一些固定尺寸的参数

    CGFloat imageW =self.scrollView.bounds.size.width;

    CGFloat imageH =self.scrollView.bounds.size.height;

    CGFloat imageY =0;

    

    //添加5张图片到scrollView

    for (int i =0; i < JFImageCount; i++) {

        CGFloat imageX = i * imageW;

        UIImageView * imageView = [[UIImageViewalloc]init];

        imageView.frame =CGRectMake(imageX, imageY, imageW, imageH);

        NSString *imageNameStr = [NSStringstringWithFormat:@"img_0%d",i+1];

        imageView.image = [UIImageimageNamed:imageNameStr];

        [self.scrollViewaddSubview:imageView];

    }

    // 2.设置内容尺寸

    CGFloat contentW =JFImageCount * imageW;

    self.scrollView.contentSize =CGSizeMake(contentW, 0);

    

    // 3.隐藏水平滚动条

    self.scrollView.showsHorizontalScrollIndicator =NO;

    

    // 4.分页

    self.scrollView.pagingEnabled =YES;

    

    // 5.设置pageControl的总页数

    self.pageController.numberOfPages =JFImageCount;

    // 6.添加定时器(每隔2秒调用一次selfnextImage方法)

    

    [selfaddTime];

}

/**

 * 添加定时器

 *

 */

-(void)addTime{

//    self.time = [NSTimer timerWithTimeInterval:2 target:self selector:@selector(nextImage) userInfo:nil repeats:YES];

    self.time = [NSTimerscheduledTimerWithTimeInterval:2target:selfselector:@selector(nextImage)userInfo:nilrepeats:YES];

    [[NSRunLoopcurrentRunLoop]addTimer:self.timeforMode:NSRunLoopCommonModes];

    

}


/**

 *移除定时器

 *

 **/

-(void)removeTime{

    [self.timeinvalidate];

    self.time =nil;

}



-(void)nextImage{

    // 1.增加pageControl的页码

    int page =0;

    if (self.pageController.currentPage == JFImageCount - 1) {

        page = 0;

    }else{

        page = (int)self.pageController.currentPage +1;

    }

    

    // 2.计算scrollView滚动的位置

    CGFloat offsetX = page *self.scrollView.frame.size.width;

    CGPoint offSet =CGPointMake(offsetX, 0);

    [self.scrollViewsetContentOffset:offSet animated:YES];

}


#pragma mark -scrollView 的代理方法

/**

 * scrollView正常滚动的时候就会调用

 *

 ***/

-(void)scrollViewDidScroll:(UIScrollView *)scrollView{

    // 根据scrollView的滚动位置决定pageControl显示第几页

    CGFloat scrollW = scrollView.frame.size.width;

    int page = (scrollView.contentOffset.x + scrollW *0.5) / scrollW;

    self.pageController.currentPage = page;


}


/**

 *  开始拖拽的时候调用

 */


-(void)scrollViewWillBeginDragging:(UIScrollView *)scrollView{


    // 停止定时器(一旦定时器停止了,就不能再使用)

    [selfremoveTime];

}


/**

 *  停止拖拽的时候调用

 */

- (void)scrollViewDidEndDragging:(UIScrollView *)scrollView willDecelerate:(BOOL)decelerate

{

    //开启定时器

    [selfaddTime];

}


0 0