解决pageControl页面设置无效问题
废话不多说,先上代码
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页面设置无效问题的更多相关文章
- wxpython分割窗研究(解决sashPosition=0无效的BUG)
用wxpython开发一个简单的exe其实很简单的,但是在开发的过程中会遇到若干的坑.疑问.甚至bug,让人摸不清头脑!恰恰关于这方面的文档是少之又少,看来看去大家还是在官方的文档上加以引用说明,但是 ...
- sql server 2008 提示评估期已过的解决方法(升级无效)
提示窗口: 解决步骤: 第一步:进入SQL2008配置工具中的安装中心 第二步:再进入维护界面,选择版本升级 第三步:进入产品密钥,输入密钥 第四步:一直点下一步,直到升级完毕. SQL Server ...
- C# 保存PictureBox中的图片到数据库,并从数据库读取图片显示到PictrueBox,解决报错 “无效参数”
下面是两段关键代码: /// <summary> /// 将一张图片转换为字节 /// </summary> /// <param name="img" ...
- android style 退出动画 解决退出动画无效问题
在AndroidMenifest.xml文件里面的Activity声明中,增加自己的Theme声明,如下: <activity android:name=".MyOrderListSe ...
- 解决Shiro注解无效的问题
当Shiro集成到Spring mvc中,却发现shiro的权限注解不起作用,官方的配置是要支持注解,只需要将以下代码加到spring 配置文件中即可: <bean class="or ...
- IE8下解决position:flxed无效的问题
只需将文档类型声明改成如下方式即可 <!DOCTYPE html>
- ORCLE报错解决(ora-01747:无效的用户.表.列,表.列)
原因: 这个问题出现是因为表中存在关键字造成.
- 设置height:100%无效的解决方法
设置height:100%无效的解决方法 刚接触网页排版的新手,常出现这种情况:设置table和div的高height="100%"无效,使用CSS来设置height:" ...
- table和div设置height:100%无效的完美解决方法
刚接触网页排版的新手,常出现这种情况:设置table和div的高height="100%"无效,使用CSS来设置height:"100%"也无效,为什么会这样呢 ...
随机推荐
- 统计学习方法笔记(KNN)
k近邻法(k-nearest neighbor,k-NN) 输入:实例的特征向量,对应于特征空间的点:输出:实例的类别,可以取多类. 分类时,根据其k个最近邻的训练实例的类别,通过多数表决等方式进行预 ...
- iOS模拟各种网络状态
在iOS开发中我们有在各种不同网络状态下测试app运行状态的需求.苹果给我们提供了在模拟器和真机状态下,模拟各种网络状态的软件. 在模拟器中 苹果提供的模拟网络状态的工具官网地址下载该工具需要登录Ap ...
- 日志log使用序列反序列加密(Serializer) DESCrypto 加密
若一次加密一个文件内容,文件内容不会更新变化,网上大多数序列化反序列加密程序是没问题的. 1:由于log文件的随时会更新内容,那网上常用的程序是行不通的.需要做修改 若想通过打开txt , using ...
- 如何断开所有SQL Server所有的连接
方法1: 执行以下脚本 01.declare @sql varchar(100) 02. 03.while 1=1 04.begin 05. 06.select top 1 ...
- UWP深入学习五: 传感器与搜索、共享及链接
Responding to motion and orientation sensors: Quickstart: Responding to user movement with the accel ...
- DBHelper
DBHelper: using System; using System.Collections.Generic; using System.Linq; using System.Text; usin ...
- 在Linux中让打印带颜色的字
echo显示带颜色,需要使用参数-e 格式如下: echo -e "\033[字背景颜色;文字颜色m字符串\033[0m" 例如: echo -e "\033[41;37 ...
- Apache安装配置步骤
注释:这里以Linux 红帽商业版为例~~~~~~~纯手打啊 Apache安装配置步骤 准备:关闭其他虚拟设备 #/etc/init.d/libvirtd stop #/etc/init.d/xend ...
- 状态伪类选择器(E::selection)
E::selection选择器: E::selection{background:#FF6600; color:#fff;} //当文字被选中时,背景是红色,文字是白色 E::-moz-s ...
- Storm启动流程简介
storm启动流程 storm是一个流行的开源的,分布式实时处理框架,关于storm的基本介绍可以参加这篇官方文档.大致的拓扑结构如图所示: 其中Nimbus是一个后台 ...