@interface ViewController ()<UIScrollViewDelegate>
@property (strong, nonatomic) UIScrollView *scrollView
@property (strong, nonatomic) UIPageControl *pageControl
@property (nonatomic ,weak) NSTimer *timer
@end
@implementation ViewController
- (void)viewDidLoad {
[super viewDidLoad]
[self.navigationController setNavigationBarHidden:YES animated:NO]
[self.view addSubview:self.scrollView]
[self.view addSubview:self.pageControl]
[self startTimer]
}
- (UIScrollView *)scrollView {
if (!_scrollView) {
_scrollView = [[UIScrollView alloc] init]
_scrollView.frame = CGRectMake(0, 100, screen_W, 400)
_scrollView.delegate = self
_scrollView.pagingEnabled = YES
_scrollView.contentSize = CGSizeMake(screen_W * 4, 400)
_scrollView.bounces = NO
_scrollView.showsHorizontalScrollIndicator = NO
_scrollView.showsHorizontalScrollIndicator = NO
for (NSInteger i = 0
UIImageView *imageView = [[UIImageView alloc] init]
imageView.frame = CGRectMake(i * screen_W, 0, screen_W, 400)
imageView.image = [UIImage imageNamed:[NSString stringWithFormat:@"%ld",i]]
[_scrollView addSubview:imageView]
}
}
return _scrollView
}
- (UIPageControl *)pageControl {
if (!_pageControl) {
_pageControl = [[UIPageControl alloc] init]
_pageControl.frame = CGRectMake(0, 510, screen_W, 20)
_pageControl.numberOfPages = 4
_pageControl.hidesForSinglePage = YES
[_pageControl setValue:[UIImage imageNamed:@"current"] forKeyPath:@"currentPageImage"]
[_pageControl setValue:[UIImage imageNamed:@"other"] forKeyPath:@"pageImage"]
}
return _pageControl
}
- (void)startTimer {
self.timer = [NSTimer scheduledTimerWithTimeInterval:2 target:self selector:@selector(nextPage) userInfo:nil repeats:YES]
[[NSRunLoop mainRunLoop] addTimer:self.timer forMode:NSRunLoopCommonModes]
}
- (void)stopTimer {
[self.timer invalidate]
}
- (void)nextPage {
NSInteger page = self.pageControl.currentPage + 1
if (page == 4) {
page = 0
}
[self.scrollView setContentOffset:CGPointMake(page * self.scrollView.frame.size.width, 0) animated:YES]
}
- (void)scrollViewDidScroll:(UIScrollView *)scrollView {
int page = (int)(self.scrollView.contentOffset.x / self.scrollView.frame.size.width + 0.5)
self.pageControl.currentPage = page
}
- (void)scrollViewWillBeginDragging:(UIScrollView *)scrollView {
[self stopTimer]
}
- (void)scrollViewDidEndDragging:(UIScrollView *)scrollView willDecelerate:(BOOL)decelerate {
[self startTimer]
}
@end
