iOS图片轮播器的使用


#import "ViewController.h"


@interface ViewController ()<UIScrollViewDelegate>

@property (weak, nonatomic) IBOutlet UIScrollView *scrollView;

@property (weak, nonatomic) IBOutlet UIPageControl *pageControl;


@property (nonatomic,strong) NSTimer *timer;


@end


@implementation ViewController


- (void)viewDidLoad {

    [super viewDidLoad];

    

    

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

        //获取图片名字

        NSString *imageName = [NSString stringWithFormat:@"img_%02d",i];

        //获取图片对象

        UIImage *image = [UIImage imageNamed:imageName];

        

        // 创建图片控件

        // 1. 实例化

        UIImageView *imageView = [[UIImageView alloc]init];

        

        // 2. 设置属性

        //2.1 计算X

        CGFloat imageViewX = i * (self.scrollView.bounds.size.width );

        

        imageView.frame = CGRectMake(imageViewX, 0, self.scrollView.bounds.size.width  , self.scrollView.bounds.size.height);

        

        //2.2 设置图片

        imageView.image = image;

        

        // 3.添加到对应的控件中

        [self.scrollView addSubview:imageView];

        

        

    }

    

    //让界面滚动

    self.scrollView.contentSize = CGSizeMake(5 * self.scrollView.bounds.size.width, 0);

    

    

    // 让界面有分页效果

    self.scrollView.pagingEnabled = YES;

    

    // 取消滚动条

    self.scrollView.showsVerticalScrollIndicator = NO;

    self.scrollView.showsHorizontalScrollIndicator = NO;

    

    //取消弹簧效果  bounces 弹簧

    self.scrollView.bounces = NO;

    

    

    

    //设置指示器

    self.pageControl.numberOfPages = 5;

    

    // 设置当前页

    self.pageControl.currentPage = 0;

    

  

    //1. 设置代理对象

    self.scrollView.delegate = self;

    

    //2. 遵循协议

//    @interface ViewController ()<UIScrollViewDelegate>

    //3. 实现方法

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

    


    [self startTimer];

    

    

}



- (void)startTimer{

    // 添加一个定时器让它自动翻页

    //TimeInterval:<#(NSTimeInterval)#> 代表间隔的时间

    //target 设置响应方法的对象

    //selector 响应的方法

    //    userInfo 额外的参数

    //    repeats 是否重复

    //    定时器的强引用是有系统进行维护的

    //    由于系统维护的强引用,所以要通过一个方法进行销毁

    NSTimer *timer = [NSTimer scheduledTimerWithTimeInterval:2 target:self selector:@selector(nextPage) userInfo:nil repeats:YES];

    


    self.timer = timer;

    

    

    //[注]此处为了防止有textView使用的情况下UIScrollView不工作了

//    NSDefaultRunLoopMode;

//     NSRunLoopCommonModes

    [[NSRunLoop mainRunLoop] addTimer:timer forMode:NSRunLoopCommonModes];


}


- (void)stopTimer{


    //    invalidate使无效

    [self.timer invalidate];

    //无论timer定义全局属性的时候 使用strong还是weak

    // 都必须在调用invalidate 方法之后,让成员属性等于nil

    // 官方文档的实例代码也是这么写的-->如果不这样写,很有可能导致定时器无法销毁

    self.timer = nil;

}



//显示下一页

- (void)nextPage{


    

    CGPoint offset = self.scrollView.contentOffset;

    

    if (offset.x >= 4 * self.scrollView.bounds.size.width) {

        //最后一页

        offset.x = 0;

    }else{

        offset.x += self.scrollView.bounds.size.width;

    }

    

    [self.scrollView setContentOffset:offset animated:YES];


}


/**

 *  正在滚动的时候调用的方法

 */

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

//    

//

//

//    //1.判断scrollView的偏移,来得到当前的页数

//    //1.1 获取偏移

//    CGPoint offset = scrollView.contentOffset;

//  

    NSLog(@"当前偏移 %@",  NSStringFromCGPoint(offset));

//    

//    //1.2 获取当前的页数

//    NSInteger currentPage = (offset.x + self.scrollView.bounds.size.width * 0.5) / self.scrollView.bounds.size.width;

//

//    

//    //1.3 设置pageControl的页数

//    self.pageControl.currentPage = currentPage;

//

//}



// 开始拖拽

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


    // 停止定时器

    [self stopTimer];

    

}


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


    //开启定时器

    [self startTimer];

}


@end




事例图片


评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值