UIScorlView 循环滚动
Posted 刚刚888
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了UIScorlView 循环滚动相关的知识,希望对你有一定的参考价值。
- (void) createAdScrollView { _view = [[UIView alloc] initWithFrame:CGRectMake(0, 0, WIDTH, 150)]; [self.view addSubview:_view]; _scrollView = [[UIScrollView alloc] initWithFrame:CGRectMake(0, 0, WIDTH, 150)]; _scrollView.delegate = self; // 设置scrollView的contentSize _scrollView.contentSize = CGSizeMake(WIDTH*(self.scrollViewDataArray.count+1), 0); _scrollView.pagingEnabled = YES; _scrollView.delegate = self; // 注意这里不需要add,因为在headerView时直接return _scrollView; [_view addSubview:_scrollView]; for (int i=0; i<self.scrollViewDataArray.count+1; i++) { int y = i; if (y == self.scrollViewDataArray.count) { y = 0; } UIButton *button = [ZCControl createButtonWithFrame:CGRectMake(WIDTH*i, 0, WIDTH, 150) title:nil imageName:nil bgImageName:nil target:self method:@selector(buttonClick:)]; // [button sd_setBackgroundImageWithURL:[NSURL URLWithString:self.scrollViewDataArray[y][@"image_path"]] forState:UIControlStateNormal]; placeholderImage:[UIImage imageNamed:@"recommend_Face"]; button.tag = 100+i; [_scrollView addSubview:button]; } // 添加定时器 [NSTimer scheduledTimerWithTimeInterval:2 target:self selector:@selector(timerClick) userInfo:nil repeats:YES]; // 添加小白点 pageController = [[UIPageControl alloc]initWithFrame:CGRectMake(100, 120, 100, 30)]; pageController.numberOfPages = self.scrollViewDataArray.count; // 白色看不清设置成其他颜色 pageController.pageIndicatorTintColor = [UIColor grayColor]; // pageController虽然是和scrollView并用的,但是并不加载在sc [_view addSubview:pageController]; // kvo观察者模式,负责观察某一个对象其中某一个值的变化,如果有新值变化就通知你。需要注意的是,观察者模式需要手动销毁,当前界面销毁并不代表观察者模式也销毁了 // sc观察的对象,self为响应的对象,path为观察sc其中的一个属性,使用字符串来表示这个属性,要求与属性名保持一致。options为观察值变化为有新的变化的时候,通知我。context上下文 [_scrollView addObserver:self forKeyPath:@"contentOffset" options:NSKeyValueObservingOptionNew context:nil]; } - (void)timerClick{ // 首先判断_scrollView当前的偏移 CGPoint point = _scrollView.contentOffset; point.x = point.x+WIDTH; [UIView animateWithDuration:1 animations:^{ _scrollView.contentOffset = point; }completion:^(BOOL finished) { CGPoint point1 = _scrollView.contentOffset; if (_scrollView.contentOffset.x/WIDTH == self.scrollViewDataArray.count) { _scrollView.contentOffset = CGPointZero; } }]; } - (void)observeValueForKeyPath:(NSString *)keyPath ofObject:(id)object change:(NSDictionary *)change context:(void *)context { // keyPath为观察的那个key也就是属性,object为观察的的那个对象,change为变化的值 int x = _scrollView.contentOffset.x/320; pageController.currentPage = x; }
以上是关于UIScorlView 循环滚动的主要内容,如果未能解决你的问题,请参考以下文章