IOS 图片轮播器

IOS 图片轮播器_第1张图片


#import "ViewController.h"
#define kImageCount 5
@interface ViewController () <UIScrollViewDelegate>
@property (nonatomic,strong) UIScrollView *usv ;
@property (nonatomic,strong) UIPageControl *pageControll;
@property (nonatomic,strong) NSTimer *timer;
@end
@implementation ViewController
-(UIScrollView *)usv
{
    if (!_usv) {
        
        _usv = [[UIScrollView alloc] initWithFrame:CGRectMake(10, 20, 300 , 160)];
        
        _usv.contentSize = CGSizeMake(_usv.bounds.size.width * kImageCount,0);
        _usv.backgroundColor = [UIColor redColor];
        _usv.pagingEnabled = YES;
        _usv.showsHorizontalScrollIndicator = NO;
        _usv.showsVerticalScrollIndicator = NO;
        _usv.bounces = NO;
        [self.view  addSubview:_usv];
        
    }
    return _usv;
    
}
-(UIPageControl *)pageControll
{
    if (!_pageControll) {
        
        _pageControll = [[UIPageControl alloc] init];
        CGSize size = [_pageControll sizeForNumberOfPages:kImageCount];
        _pageControll.numberOfPages = kImageCount;
        _pageControll.frame = CGRectMake(0, 0, size.width, size.height);
//        _pageControll.backgroundColor = [UIColor redColor];
        _pageControll.pageIndicatorTintColor = [UIColor blackColor];
        _pageControll.currentPageIndicatorTintColor = [UIColor grayColor];
        _pageControll.center = CGPointMake(self.view.center.x, 150);
        [self.view addSubview:_pageControll];
        [_pageControll addTarget:self action:@selector(UpdatePageCon:) forControlEvents:UIControlEventValueChanged];
        
        
    }
    return _pageControll;
}
- (void)scrollViewWillBeginDragging:(UIScrollView *)scrollView
{
    [self.timer invalidate];
}
- (void)scrollViewDidEndDragging:(UIScrollView *)scrollView willDecelerate:(BOOL)decelerate
{
    [self startTimer];
}
-(void)UpdatePageCon:(UIPageControl *)pageController
{
    
    CGFloat currentX =  pageController.currentPage * self.usv.bounds.size.width;
    self.usv.contentOffset = CGPointMake(currentX,0);
    
}
- (void)scrollViewDidEndDecelerating:(UIScrollView *)scrollView
{
    int CurrentPage = scrollView.contentOffset.x / self.usv.bounds.size.width;
    self.pageControll.currentPage = CurrentPage;
    
}
- (void)viewDidLoad {
    [super viewDidLoad];
    for (int i = 0 ; i < kImageCount; i++) {
        UIImage *uim = [UIImage imageNamed:[NSString stringWithFormat:@"img_%02d",i+1]];
        UIImageView *imv = [[UIImageView alloc] initWithFrame:self.usv.bounds];
        imv.image = uim;
        
        [self.usv addSubview:imv];
       
    }
    [self.usv.subviews enumerateObjectsWithOptions:NSEnumerationConcurrent usingBlock:^(UIImageView *imv, NSUInteger idx, BOOL *stop) {
        
        
        CGRect frame = self.usv.bounds;
        frame.origin.x = imv.frame.size.width * idx ;
        imv.frame = frame;
       
    }];
    self.pageControll.currentPage = 0 ;
    self.usv.delegate = self;
    
    
    [self startTimer];
    
    // Do any additional setup after loading the view, typically from a nib.
}
-(void)startTimer
{
        self.timer = [NSTimer scheduledTimerWithTimeInterval:1.0 target:self selector:@selector(updateCurrentP) userInfo:nil repeats:YES ];
        [[NSRunLoop currentRunLoop] addTimer:self.timer forMode:NSRunLoopCommonModes];
}
-(void)updateCurrentP
{
    int currPage = (self.pageControll.currentPage + 1) % kImageCount;
    self.pageControll.currentPage = currPage;
    [self UpdatePageCon:self.pageControll];
}
@end


你可能感兴趣的:(IOS 图片轮播器)