废话不多说,先上代码

1.添加pageViewControl

 - (void)addPageControl {

     UIPageControl *pageControl = [[UIPageControl alloc]initWithFrame:CGRectMake(, , , )];
_pageControl = pageControl; //设置当前页面和费当前页面的pageControl的圆点颜色
pageControl.pageIndicatorTintColor = [UIColor greenColor];
pageControl.currentPageIndicatorTintColor = [UIColor blueColor]; // 1.设置pageControl单页的时候是否隐藏
pageControl.hidesForSinglePage = YES; // 2.设置pageControl显示的图片(KVC)
[pageControl setValue:[UIImage imageNamed:@"current"] forKeyPath:@"_currentPageImage"];
[pageControl setValue:[UIImage imageNamed:@"other"] forKeyPath:@"_pageImage"]; // 3.设置总页数(一定要在初始化UIPageControl对象时设置页数,不然不显示!!!!!!!!!!!!)
_pageControl.numberOfPages = self.imageNames.count; [self.view addSubview:pageControl]; }

注意: 一定要在初始化UIPageControl对象时设置页数,不然不显示!

2.添加定时器,定时滚动

   #pragma mark - 定时器的相关方法
- (void)startTimer { // 返回一个会自动执行任务的定时器
self.timer = [NSTimer scheduledTimerWithTimeInterval:2.0 target:self selector:@selector(nextPage:) userInfo:@"" repeats:YES]; [[NSRunLoop mainRunLoop] addTimer:self.timer forMode:NSRunLoopCommonModes];
} - (void)stopTimer { [self.timer invalidate]; } // 滚动到下一页
- (void)nextPage:(NSTimer *)timer{ // 计算下一页页码
NSInteger page = self.pageControl.currentPage + ; // 超过最后一页
if (page == self.imageNames.count) {
page = ;
} // 滚动到下一页
[_pageScrollView setContentOffset:CGPointMake(page * _pageScrollView.frame.size.width, ) animated:YES]; }

3.遵守 UIScrollViewDelegate, 监听滚动的状况, 以便通过crollView.contentOffset.x 来计算页码

 #pragma mark - UIScrollViewDelegate

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

     // 计算页码
NSUInteger page = (int)(scrollView.contentOffset.x / scrollView.frame.size.width + 0.5); // 设置页码
_pageControl.currentPage = page; } // 用户即将开始拖拽scrollView,停止定时器 - (void)scrollViewWillBeginDragging:(UIScrollView *)scrollView { [self stopTimer]; } //用户已经停止拖拽scrollView,开启定时器 - (void)scrollViewDidEndDragging:(UIScrollView *)scrollView willDecelerate:(BOOL)decelerate { [self startTimer]; }

总结:通过以上代码可以看出, 页码的控制是通过 scrollView.contentOffset.x来计算的, 充分借助了 UIScrollViewDelegate中的代理方法, 准确计算位移。

求关注

个人博客:http://www.cnblogs.com/loveDodream-zzt/

Demo:https://github.com/ZTV587/ZTCarouselAD (这个Demo是用XIB搭建的, 纯代码见本文)

解决pageControl页面设置无效问题的更多相关文章

  1. wxpython分割窗研究(解决sashPosition=0无效的BUG)

    用wxpython开发一个简单的exe其实很简单的,但是在开发的过程中会遇到若干的坑.疑问.甚至bug,让人摸不清头脑!恰恰关于这方面的文档是少之又少,看来看去大家还是在官方的文档上加以引用说明,但是 ...

  2. sql server 2008 提示评估期已过的解决方法(升级无效)

    提示窗口: 解决步骤: 第一步:进入SQL2008配置工具中的安装中心 第二步:再进入维护界面,选择版本升级 第三步:进入产品密钥,输入密钥 第四步:一直点下一步,直到升级完毕. SQL Server ...

  3. C# 保存PictureBox中的图片到数据库,并从数据库读取图片显示到PictrueBox,解决报错 “无效参数”

    下面是两段关键代码: /// <summary> /// 将一张图片转换为字节 /// </summary> /// <param name="img" ...

  4. android style 退出动画 解决退出动画无效问题

    在AndroidMenifest.xml文件里面的Activity声明中,增加自己的Theme声明,如下: <activity android:name=".MyOrderListSe ...

  5. 解决Shiro注解无效的问题

    当Shiro集成到Spring mvc中,却发现shiro的权限注解不起作用,官方的配置是要支持注解,只需要将以下代码加到spring 配置文件中即可: <bean class="or ...

  6. IE8下解决position:flxed无效的问题

    只需将文档类型声明改成如下方式即可 <!DOCTYPE html>

  7. ORCLE报错解决(ora-01747:无效的用户.表.列,表.列)

    原因: 这个问题出现是因为表中存在关键字造成.

  8. 设置height:100%无效的解决方法

    设置height:100%无效的解决方法 刚接触网页排版的新手,常出现这种情况:设置table和div的高height="100%"无效,使用CSS来设置height:" ...

  9. table和div设置height:100%无效的完美解决方法

    刚接触网页排版的新手,常出现这种情况:设置table和div的高height="100%"无效,使用CSS来设置height:"100%"也无效,为什么会这样呢 ...

随机推荐

  1. 6.HotSpot垃圾收集器

    HotSpot JVM收集器 上面有7中收集器,分为两块,上面为新生代收集器,下面是老年代收集器.如果两个收集器之间存在连线,就说明它们可以搭配使用. 并发和并行 先解释下什么是垃圾收集器的上下文语境 ...

  2. DataTime格式化大全(转载)

    //c datetime 格式化 DateTime dt = DateTime.Now; Label1.Text = dt.ToString();//2005-11-5 13:21:25 Label2 ...

  3. hdoj 1874 畅通工程续

    Problem Description 某省自从实行了很多年的畅通工程计划后,终于修建了很多路.不过路多了也不好,每次要从一个城镇到另一个城镇时,都有许多种道路方案可以选择,而某些方案要比另一些方案行 ...

  4. centos的安装,网络的调试

    因业务需要,我今天尝试为公司服务器安装centos,选择的版本是6.7 第一步,下载:http://isoredirect.centos.org/centos/6/isos/x86_64/

  5. Cocos2d-x Application Wizard for Visual Studio User Guide

    0. Overview Cocos2d-x-win32's project can be generated by Wizard. Wizard supports Visual Studio 2008 ...

  6. C++ 类的静态成员详细讲解

    在C++中,静态成员是属于整个类的而不是某个对象,静态成员变量只存储一份供所有对象共用.所以在所有对象中都可以共享它.使用静态成员变量实现多个对象之间的数据共享不会破坏隐藏的原则,保证了安全性还可以节 ...

  7. du -sg 和df -g 所看的文件系统大小不一致

    最近碰到一个问题: df -g 查看内存,发现空间已经满了,但是到对应目录查看,发现只用了一半的空间,感觉还有一半不见了. 经咨询其他人,给了两个解释: 1.fsck :使用Fsck命令修复损坏的分区 ...

  8. [C#] 與Android共舞–手機post資料給Server (转帖)

    最近在搞安卓,跟Server溝通是一定要的,這範例很簡單,就是我在Android 上面,透過POST 的方式傳資料給 Server ,則Server 收到值後直接回傳, Server side 是用a ...

  9. 用c#开发微信 (22) 微信商城 - 微信支付 (c#源码)

    微信支付有几种支付模式:刷卡支付,扫码支付,公众号支付,APP支付.本文介绍用于在微信商城里的公众号支付. 1. 效果图 在商城里购买商品后,到支付页面: 点击上面的确认支付,转到下面微信支付页面: ...

  10. AngularJS实战项目(Ⅰ)--含源码

    前言 钻研ABP框架的日子,遇到了很多新的知识,因为对自己而言是新知识,所以经常卡在很多地方,迟迟不能有所突破,作为一个稍有上进心的程序员,内心绝对是不服输的,也绝对是不畏困难的,心底必然有这样一股力 ...