.h文件代码
@interface ViewController : UIViewController<UIScrollViewDelegate>
{
UIScrollView *_scrollView;
UIPageControl *_pageControl;
NSTimer *_timer;
int _speed;
}
@end
.m文件代码
- (void)viewDidLoad
{
[super viewDidLoad];
_scrollView = [[UIScrollView alloc] initWithFrame:CGRectMake(0, 20, 320, 200)];
_scrollView.contentSize = CGSizeMake(5 *320, 200);
for (int a = 0; a < 5; a++)
{
UIImageView *imageView = [[UIImageView alloc] initWithFrame:CGRectMake(a *320, 0, 320, 200)];
NSString *imageStr = [NSString stringWithFormat:@"image%d.jpg",a+1];
imageView.image = [UIImage imageNamed:imageStr];
[_scrollView addSubview:imageView];
}
_scrollView.pagingEnabled = YES;
_scrollView.bounces = NO;
_scrollView.delegate = self;
[self.view addSubview:_scrollView];
_pageControl = [[UIPageControl alloc] initWithFrame:CGRectMake(100, 200, 140, 20)];
_pageControl.numberOfPages = 5;
_pageControl.currentPageIndicatorTintColor = [UIColor yellowColor];
_pageControl.pageIndicatorTintColor = [UIColor blackColor];
[_pageControl addTarget:self action:@selector(valueChange) forControlEvents:UIControlEventValueChanged];
[self.view addSubview:_pageControl];
设置定时器,使图片自动滚动
_timer = [NSTimer scheduledTimerWithTimeInterval:1 target:self selector:@selector(onTimer) userInfo:nil repeats:YES];
}
- (void)onTimer
{
if (_pageControl.currentPage == 0)
{
_speed = 1;
}
if (_pageControl.currentPage == 4)
{
_speed = -1;
}
_pageControl.currentPage = _pageControl.currentPage + _speed;
[_scrollView setContentOffset:CGPointMake(_pageControl.currentPage *320, 0) animated:YES];
}
当拖动图片的时候,使pageControl的当前显示点一起改变
- (void)valueChange
{
[_scrollView setContentOffset:CGPointMake(_pageControl.currentPage *320, 0) animated:YES];
}
- (void)scrollViewWillBeginDragging:(UIScrollView *)scrollView
{
//[_timer invalidate];
// _timer = nil;
}
- (void)scrollViewDidEndDragging:(UIScrollView *)scrollView willDecelerate:(BOOL)decelerate
{
}
- (void)scrollViewWillBeginDecelerating:(UIScrollView *)scrollView
{
}
- (void)scrollViewDidEndDecelerating:(UIScrollView *)scrollView
{
//在scrollView已经结束减速的时候, 更改pageControl.currentPage属性的值;
//根据scrollView的偏移量/320, 计算当前小圆点所处于的位置;
_pageControl.currentPage = _scrollView.contentOffset.x/320;
NSLog(@"_scrollView.contentOffSet = %f",_scrollView.contentOffset.x);
NSLog(@"_pageControl.currentPage = %d",_pageControl.currentPage);
_timer = [NSTimer scheduledTimerWithTimeInterval:1 target:self selector:@selector(onTimer) userInfo:nil repeats:YES];
}
具体代码