• 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;
    }
  • 相关阅读:
    [EF]vs15+ef6+mysql code first方式
    Asp.net MVC]Asp.net MVC5系列——布局视图
    Asp.net MVC]Asp.net MVC5系列——Routing特性
    Asp.net MVC]Asp.net MVC5系列——Razor语法
    Asp.net MVC]Asp.net MVC5系列——实现编辑、删除与明细信息视图
    Asp.net MVC]Asp.net MVC5系列——在模型中添加验证规则
    Asp.net MVC]Asp.net MVC5系列——在模型中添加
    Django跨域(前端跨域)
    Stark组件
    Admin组件
  • 原文地址:https://www.cnblogs.com/Ganggang888/p/5253585.html
Copyright © 2020-2023  润新知