在UIScrollView中会加入UIPageControl作为页码标识,能够让用户清楚的知道当前的页数。我们须要优化的一点是让pageControl的小圆点精确的跟着scrollView而定位。我们先来看一下效果图:

watermark/2/text/aHR0cDovL2Jsb2cuY3Nkbi5uZXQv/font/5a6L5L2T/fontsize/400/fill/I0JBQkFCMA==/dissolve/70/gravity/Center" height="381" width="249" alt="">

我们发现。当图片拖动不到一半的时候,pageControl的圆点定位到前一张图,图片拖动超过一半的时候。定位到下一张图。这里就须要四舍五入的计算了。

我们能够利用协议 delegate 去做这件事情。

首先,我们要为当前我们设置的这个scrollView加入代理:

scrollView.delegate = self;

这里必需要让当前类去遵守 UIScrollViewDelegate 协议。

在 UIScrollViewDelegate 中。有这么一个方法。仅仅要scrollView滚动就能够触发。

我们能够在这种方法中去实现。

- (void)scrollViewDidScroll:(UIScrollView *)scrollView
{
// 用水平移动的距离除以宽度等于页数,可是并没有精确
double page = scrollView.contentOffset.x / scrollView.width; // 採用四舍五入来确定更靠近哪一页。并设置(以下是一个四舍五入的小技巧,+ 0.5 再向下取整就可以)
self.pageControl.currentPage = (int)(page + 0.5);
}

分析举例说明:(page = 0 为第一张图片,page = 1 为第二张图片,以此类推)

page = 0.95,更接近第二张图片。page + 0.5 = 1.45。(int)1.45 = 1

page = 1.21,更接近第二张图片。page + 0.5 = 1.71。(int)1.71 = 1

page = 1.67。更接近第三张图片。page + 0.5 = 2.17,(int)2.17 = 2

page = 2.11,更接近第三张图片,page + 0.5 = 2.61,(int)2.61 = 2

另外注意的是。强制转化为int类型是向下取整,即省略小数点后的全部数字。

v=2.0" />

iOS 【UIKit-UIPageControl利用delegate定位圆点位置 之 四舍五入小技巧】的更多相关文章

  1. iOS开发----地图与导航--定位和位置信息获取

    要实现地图.导航功能,往往需要先熟悉定位功能,在iOS中通过Core Location框架进行定位操作.Core Location自身可以单独使用,和地图开发框架MapKit完全是独立的,但是往往地图 ...

  2. iOS开发时间控件怎么强制24小时制(小技巧)

    1)当你的format格式是 NSDateFormatter* dateFormatter = [[[NSDateFormatter alloc] init] autorelease];[dateFo ...

  3. 利用.dSYM跟.app文件准确定位Crash位置

     本文转载至  http://blog.csdn.net/lvxiangan/article/details/28102629       利用.dSYM和.app文件准确定位Crash位置首先,确保 ...

  4. iOS开发系列--地图与定位

    概览 现在很多社交.电商.团购应用都引入了地图和定位功能,似乎地图功能不再是地图应用和导航应用所特有的.的确,有了地图和定位功能确实让我们的生活更加丰富多彩,极大的改变了我们的生活方式.例如你到了一个 ...

  5. iOS中的地图和定位

    文章摘自http://www.cnblogs.com/kenshincui/p/4125570.html#location  如有侵权,请联系删除. 概览 现在很多社交.电商.团购应用都引入了地图和定 ...

  6. 转-iOS开发系列--地图与定位

    来自: http://www.cnblogs.com/kenshincui/p/4125570.html#autoid-3-4-0 概览 现在很多社交.电商.团购应用都引入了地图和定位功能,似乎地图功 ...

  7. iOS进阶_地图上定位的标志——大头针

    一.添加大头针 地图使用的框架是MapKit 大头针走的是MKAnnotation协议 /* 注意:因为是满足协议MKAnnotation,所以没有MKAnnotation的系统大头针类,必须自定义大 ...

  8. iOS开发拓展篇—CoreLocation定位服务

    iOS开发拓展篇—CoreLocation定位服务 一.简单说明 1.CLLocationManager CLLocationManager的常用操作和属性 开始用户定位- (void)startUp ...

  9. iOS UIKit:viewController之动画(5)

    当弹出一个view controller时,UIKit提供了一些标准转换动画,并且也支持用户自定义的动画效果. 1 UIView动画 UIView是自带动画实现功能,其中有两种方式实现:        ...

随机推荐

  1. Android自定义视图

    Android框架为我们提供了大量的视图类来帮助我们做好展示信息以及同用户进行交互的工作.然后有时候,我们的app或许需要一些在Android内建视图之外特殊的视图,那么此时我们就需要自定义视图.下面 ...

  2. 火车票问题.以及x轴连续矩形,最大面积问题

    假设火车有10个站点: 1000个座位 api(1)  -> param  : leftStation, rightStation -> result : cnt             ...

  3. php资源类型变量

    php资源类型变量 一.总结 1. php资源类型变量:用来打开文件.数据库连接.图形画布区域等的一种特殊变量,比如FILE *fp;  二.PHP: Resource 资源类型 Resource 资 ...

  4. Impala是什么?

    Impala是Cloudera公司主导开发的新型查询系统,它提供SQL语义,能查询存储在Hadoop的HDFS和HBase中的PB级大数据.已有的Hive系统虽然也提供了SQL语义,但由于Hive底层 ...

  5. Vue 打包后报错 Uncaught TypeError: Cannot redefine property: $router

    原因:就如报错提示所描述的,不能重新定义$router,说明是重复定了$router.通常是因为在项目中安装了vue-router的依赖并且用Vue.use()使用了vue-router,还在inde ...

  6. Python操作MySQL数据库完成简易的增删改查功能

    说明:该篇博客是博主一字一码编写的,实属不易,请尊重原创,谢谢大家! 目录 一丶项目介绍 二丶效果展示 三丶数据准备 四丶代码实现 五丶完整代码 一丶项目介绍 1.叙述 博主闲暇之余花了10个小时写的 ...

  7. Method of address space layout randomization for windows operating systems

    A system and method for address space layout randomization ("ASLR") for a Windows operatin ...

  8. R语言-有负下标里才干有零

    1.仅仅有负下标里才干有零 先看一个样例 >a<-c(1,2,3,4) >a[-1:1] > a[-1:1] Error in a[-1:1] : 仅仅有负下标里才干有零 (1 ...

  9. 在 Android* 商务应用中实施地图和地理围栏特性

    摘要 本案例研究讨论了怎样将地图和地理定位特性构建到 Android* 商务应用中.包含在 Google Maps* 上覆盖商店位置,以及在设备进入商店地理围栏邻近区域时借助地理围栏通知用户. 文件夹 ...

  10. .less为后缀的文件是什么

    .less为后缀的文件是什么 一.总结 1.less是什么:LESS 为 Web 开发者带来了福音,它在 CSS 的语法基础之上,引入了变量,Mixin(混入),运算以及函数等功能,大大简化了 CSS ...