这里是oc版本的,简单记录下:
具体代码如下:
1,准备
#define FRAME [[UIScreen mainScreen] bounds] #define WIDTH FRAME.size.width #define HEIGHT FRAME.size.height
2,具体实现
//scrollview的添加 _bigScrollView = [[UIScrollView alloc]initWithFrame:CGRectMake(0, 20, WIDTH, HEIGHT)]; _bigScrollView.showsHorizontalScrollIndicator = NO; _bigScrollView.contentSize = CGSizeMake(WIDTH *6, 0); _bigScrollView.pagingEnabled = YES; _bigScrollView.bounces = NO; _bigScrollView.delegate = self; [self.view addSubview:_bigScrollView]; //图片内容的添加 for ( int i = 0; i<6; i++) { UIImageView *imageView = [[UIImageView alloc]initWithFrame:CGRectMake(i *WIDTH, 0, WIDTH, HEIGHT)]; imageView.image = [UIImage imageNamed:[NSString stringWithFormat:@"%d.jpg",i]]; [_bigScrollView addSubview:imageView]; } //pagecontrol的创建 _pageControl = [[UIPageControl alloc] initWithFrame:CGRectMake(0, 0, WIDTH, 40)] ; _pageControl.center = CGPointMake(_bigScrollView.center.x, _bigScrollView.center.y); _pageControl.numberOfPages = 6; _pageControl.currentPage = 0; _pageControl.pageIndicatorTintColor = [UIColor blueColor]; _pageControl.currentPageIndicatorTintColor =[UIColor redColor]; [self.view addSubview:_pageControl]; [_pageControl addTarget:self action:@selector(pageControllerClick) forControlEvents:UIControlEventValueChanged]; //定时器的创建 _timer = [NSTimer scheduledTimerWithTimeInterval:2 target:self selector:@selector(onTimer) userInfo:nil repeats:YES];
3,响应方法的实现
-(void)pageControllerClick { [_bigScrollView setContentOffset:CGPointMake(_pageControl.currentPage*320, 0) animated:YES]; } //在scrollview开始手动滑动的时候 - (void)scrollViewWillBeginDragging:(UIScrollView *)scrollView { [_timer setFireDate:[NSDate distantFuture]]; } //在scrollview添加一个延迟方法 - (void)scrollViewDidEndDecelerating:(UIScrollView *)scrollView { _pageControl.currentPage = _bigScrollView.contentOffset.x/WIDTH; [self performSelector:@selector(disPast) withObject:nil afterDelay:2];//延迟方法 } //启动定时器 -(void)disPast { [_timer setFireDate:[NSDate distantPast]]; } static int count=1; //定时器的具体响应方法 -(void)onTimer { _pageControl.currentPage+=count; if (_pageControl.currentPage==_pageControl.numberOfPages-1||_pageControl.currentPage==0) { count=-count; }; [_bigScrollView setContentOffset:CGPointMake(_pageControl.currentPage*WIDTH, 0) animated:YES]; }
效果图就不加了,这里仅做记录用!
时间: 2024-12-18 09:59:32