博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
iOS UIScrollView ,UIPageControl实现无限循环翻页
阅读量:6911 次
发布时间:2019-06-27

本文共 2946 字,大约阅读时间需要 9 分钟。

hot3.png

//初期化

self.scrollView = [[UIScrollView alloc]initWithFrame:CGRectMake(0, 0, DEVICE_WIDTH, 120)];

self.scrollView.showsHorizontalScrollIndicator = NO;

self.scrollView.showsVerticalScrollIndicator = NO;

self.scrollView.pagingEnabled = YES;

self.scrollView.delegate = self;

self.scrollView.directionalLockEnabled = YES;

self.scrollView.bounces = NO;

self.scrollView.scrollsToTop = NO;

[self.view addSubview:self.scrollView];

self.pageControl = [[UIPageControl alloc] initWithFrame:CGRectMake(0, 100,DEVICE_WIDTH, 10)];

self.pageControl.pageIndicatorTintColor =COLOR_3;

self.pageControl.currentPageIndicatorTintColor = [UIColor whiteColor];

[self.scrollBgView addSubview:self.pageControl];

//初期化总页数

self.totalPage = [self.dataArray count];

//当前页数

self.curPage = 1;

//PageCotrol控件总页数添加

self.pageControl.numberOfPages = self.totalPage;

//页面翻页后的刷新方法

-(void)refreshScrollView

{

    [[self.scrollView subviews] makeObjectsPerformSelector:@selector(removeFromSuperview)];

    NSMutableArray * tempArray = [[NSMutableArray alloc]init];

    int max = 3;

    if ([self.dataArray count] == 1) {

        max = 1;

        [tempArray addObject:self.dataArray[0]];

    } else {

       NSInteger before = [self getPageIndex:self.curPage - 1];

        NSDictionary * dic0 = self.dataArray[before -1];

        [tempArray addObject:dic0];

        NSDictionary * dic1 = self.dataArray[self.curPage - 1];

        [tempArray addObject:dic1];

        NSInteger after = [self getPageIndex:self.curPage + 1];

        NSDictionary * dic2 = self.dataArray[after -1];

        [tempArray addObject:dic2];

    }

    for (int i = 0; i < max; i++) {

   UIView * pageView = [[UIView alloc]initWithFrame:CGRectMake(i * DEVICE_WIDTH, 0, DEVICE_WIDTH, 120)];

        [self.scrollView addSubview:pageView];  

        //Todo添加页面上内容

    }

    if ([self.dataArray count] == 1) {

        self.scrollView.contentSize = CGSizeMake(DEVICE_WIDTH, self.scrollView.frame.size.height);

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

    } else {

       self.scrollView.contentSize = CGSizeMake(DEVICE_WIDTH * 3, self.scrollView.frame.size.height);

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

    }

    self.pageControl.currentPage = self.curPage - 1; 

}

//获取当前页

- (NSInteger)getPageIndex:(NSInteger)index

{

    // value=1为第一张,value = 0为前面一张

    if (index == 0)

    {

        index = self.totalPage;

    }

    

    if (index == self.totalPage + 1)

    {

        index = 1;

    }

    return index;

}

 

#pragma mark UIScrollViewDelegate

- (void)scrollViewDidScroll:(UIScrollView *)scrollView

{

    if (self.scrollView.contentOffset.y < 0) {

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

    }

    

    if (self.scrollView.contentOffset.y > 0) {

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

    }

    

    NSInteger x = self.scrollView.contentOffset.x;

    

    // 往下翻一张

    if (x >= 2 * self.scrollView.frame.size.width)

    {

        self.curPage = [self getPageIndex:self.curPage + 1];

        [self refreshScrollView];

    }

    

    if (x <= 0)

    {

        self.curPage = [self getPageIndex:self.curPage - 1];

        [self refreshScrollView];

    }

}

转载于:https://my.oschina.net/StriveBoy/blog/855982

你可能感兴趣的文章
nginx部分调优参数
查看>>
MySQL数据库基础(四)——MySQL数据库创建实例
查看>>
提交包到iTunes Connect时构建版本“正在处理”后直接消失的问题
查看>>
我的友情链接
查看>>
QQ空间技术架构之深刻揭密
查看>>
nfs常见问题解决方法
查看>>
centOS 6 安装mongoDB
查看>>
Java基础学习总结(10)——static关键字
查看>>
大型网站技术架构(六)网站的伸缩性架构
查看>>
Linux实用工具
查看>>
JDBC Statement 实例- 查询结果集
查看>>
MyBatis学习总结(11)——MyBatis动态Sql语句
查看>>
SQL两表之间:根据一个表的字段更新另一个表的字段
查看>>
Java消息服务JMS详解
查看>>
RabbitMQ学习总结(7)——Spring整合RabbitMQ实例
查看>>
Java Web学习总结(23)——Distributed Configuration Management Platform(分布式配置管理平台)...
查看>>
2 curses库IO处理--光标操作
查看>>
DB2中的is null与=‘’
查看>>
git的使用
查看>>
win10中“windbg+vmware+win7双机调试”设置
查看>>