zoukankan      html  css  js  c++  java
  • 轮播图 定时滚动

    图片轮播器 在很多应用软件中都有应用 ,需要制作 无限滚动的 ,下面贴上自己写的小Demo, 能实现相关的功能。

    Ps: 没有用到pageControl ,只是图片自动无限滚动 ,没有任何的 处理 。

    #import "ViewController.h"

     

    @interface ViewController : UIViewController <</span>UIScrollViewDelegate>

    @property (nonatomic,weak) UIScrollView *scrollView;

    @property (nonatomic,weak) UIImageView *currentImageView;   // 当前imageView

    @property (nonatomic,weak) UIImageView *nextImageView;      // 下一个imageView

    @property (nonatomic,weak) UIImageView *preImageView;       //上一个imageView

    @property (nonatomic,assign) BOOL isDragging;               //是否正在拖动

    @property (nonatomic,strong)NSTimer *timer;                 //设置动画

    @end

    @implementation ViewController

    - (void)viewDidLoad {

        [super viewDidLoad];

        // Do any additional setup after loading the view, typically from a nib.

        UIScrollView *scrollView =[[UIScrollView alloc] init];

        CGFloat width = self.view.frame.size.width;

        CGFloat height = self.view.frame.size.height;

        scrollView.frame = CGRectMake(0, 0, width, height);

        [self.view addSubview:scrollView];

        self.scrollView = scrollView;

        [self.scrollView setContentSize:CGSizeMake(width * 3, height)];

        //  设置隐藏横向条

        self.scrollView.showsHorizontalScrollIndicator = NO;

        //  设置自动分页

        self.scrollView.pagingEnabled = YES;

        //  设置代理

        self.scrollView.delegate = self;

        //  设置当前点

        self.scrollView.contentOffset = CGPointMake(width, 0);

        //  设置是否有边界

        self.scrollView.bounces = NO;

        //  初始化当前视图

        UIImageView *currentImageView =[[UIImageView alloc] init];

        currentImageView.image = [UIImage imageNamed:@"1.jpg"];

        [self.scrollView addSubview:currentImageView];

        self.currentImageView = currentImageView;

        self.currentImageView.frame = CGRectMake(width, 0, width, height);

        self.currentImageView.contentMode = UIViewContentModeScaleAspectFill;

        //  初始化下一个视图

        UIImageView *nextImageView = [[UIImageView alloc] init];

        nextImageView.image = [UIImage imageNamed:@"2.jpg"];

        [self.scrollView addSubview:nextImageView];

        self.nextImageView = nextImageView;

        self.nextImageView.frame = CGRectMake(width * 2, 0, width, height);

        self.nextImageView.contentMode = UIViewContentModeScaleAspectFill;

        //  初始化上一个视图

        UIImageView *preImageView =[[UIImageView alloc] init];

        preImageView.image = [UIImage imageNamed:@"6.jpg"];

        preImageView.frame = CGRectMake(0, 0, width, height);

        [self.scrollView addSubview:preImageView];

        self.preImageView = preImageView;

        self.preImageView.contentMode =UIViewContentModeScaleAspectFill;

        

        //  设置时钟动画 定时器

        self.timer = [NSTimer scheduledTimerWithTimeInterval:1.0f target:selfselector:@selector(update:) userInfo:nil repeats:YES];

        //  将定时器添加到主线程

        [[NSRunLoop mainRunLoop] addTimer:self.timer forMode:NSRunLoopCommonModes];

        

    }

    - (void)update:(NSTimer *)timer{

        //定时移动

        

        if (_isDragging == YES) {

            return ;

        }

        CGPoint offSet = self.scrollView.contentOffset;

       offSet.x +=offSet.x;

       [self.scrollView setContentOffset:offSet animated:YES];

     

        if (offSet.x >= self.view.frame.size.width *2) {

            offSet.x = self.view.frame.size.width;

        }

        

        

    }

    #pragma mark - UIScrollViewDelegate

    - (void)scrollViewWillBeginDragging:(UIScrollView *)scrollView

    {

        _isDragging = YES;

    }

    //  停止滚动

    - (void)scrollViewDidEndDecelerating:(UIScrollView *)scrollView

    {

        _isDragging = NO;

        step = 0;

    }

    // 开始拖动

    - (void) scrollViewDidScroll:(UIScrollView *)scrollView{

        static int i =1; //   当前展示的是第几张图片

        float offset = self.scrollView.contentOffset.x;

        if (self.nextImageView.image == nil || self.preImageView.image == nil) {

            //  加载下一个视图

            NSString *imageName1 = [NSString stringWithFormat:@"%d.jpg",i == KOUNT ? 1:i +1];

            _nextImageView.image = [UIImage imageNamed:imageName1];

            // 加载上一个视图

            NSString *imageName2 = [NSString stringWithFormat:@"%d.jpg",i==1 ? KOUNT :i-1];

            _preImageView.image = [UIImage imageNamed:imageName2];

        }

        if(offset ==0){

            _currentImageView.image = _preImageView.image;

            scrollView.contentOffset = CGPointMake(scrollView.bounds.size.width, 0);

            _preImageView.image = nil;

            if (i == 1) {

                i =KOUNT;

            } else{

                i-=1;

            }

        }

        if (offset == scrollView.bounds.size.width * 2) {

            _currentImageView.image = _nextImageView.image;

            scrollView.contentOffset = CGPointMake(scrollView.bounds.size.width, 0);

            _nextImageView.image = nil;

            if (i == KOUNT) {

                i  =1 ;

            }else{

                i +=1 ;

            }

        }

        

    }

    - (void)didReceiveMemoryWarning {

        [super didReceiveMemoryWarning];

        // Dispose of any resources that can be recreated.

    }

    @end

  • 相关阅读:
    idea 团队成员修改工程后push推送
    clone克隆远程库工程到本地
    idea本地工程项目push推送到远程库
    Android中使用ViewGroup.removeViews()时出现NullPointException解决方案
    Android项目的targetSDK>=23,在低于Android6.0的部分测试机(类似华为)上运行时出现的系统权限问题
    C#-Xamarin的Android项目开发(三)——发布、部署、打包
    defineProperty 和Proxy双向绑定演示,你还不知道么?
    2020想学习JAVA的同学看过来,最基础的编程CRUD你会了没?
    三面拿杭州研究院50offer:面对这些问题,你都能做到嘛??
    ROS 机器人技术
  • 原文地址:https://www.cnblogs.com/CodingMann/p/4938757.html
Copyright © 2011-2022 走看看