IOS 中UIKit-UIPageControl利用delegate定位圆点位置

 更新时间:2017年04月13日 14:50:05   作者:CoderZYWang  
这篇文章主要介绍了IOS 中UIKit-UIPageControl利用delegate定位圆点位置 的相关资料,需要的朋友可以参考下

IOS 中UIKit-UIPageControl利用delegate定位圆点位置

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

我们发现,当图片拖动不到一半的时候,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类型是向下取整,即省略小数点后的所有数字。

感谢阅读,希望能帮助到大家,谢谢大家对本站的支持!

相关文章

  • IOS中无限滚动Scrollview效果

    IOS中无限滚动Scrollview效果

    这篇文章主要为大家详细介绍了IOS中无限滚动Scrollview效果,文中示例代码介绍的非常详细,具有一定的参考价值,感兴趣的小伙伴们可以参考一下
    2016-02-02
  • iOS实现列表与网格两种视图的相互切换

    iOS实现列表与网格两种视图的相互切换

    相信大家应该也都发现了,在现在很多的电商app中,都会有列表视图和网格两种视图的相互切换。例如京东和淘宝。这样更利于提高用户的体验度,所以这篇文章小编就是大家分享下利用iOS实现列表与网格两种视图相互切换的方法,文中介绍的很详细,感兴趣的下面来一起看看吧。
    2016-10-10
  • ios设计模式--委托模式

    ios设计模式--委托模式

    这篇文章主要介绍了ios设计模式中的委托模式,希望对大家学习ios框架有所帮助,下面让我们一起来了解一下吧
    2023-03-03
  • IOS 单击手势的添加实现代码

    IOS 单击手势的添加实现代码

    这篇文章主要介绍了IOS 单击手势的添加实现代码的相关资料,需要的朋友可以参考下
    2017-05-05
  • 总结iOS中runtime的使用

    总结iOS中runtime的使用

    iOS开发中的Runtime可谓是功能强大,同时Runtime使用起来也是非常灵活的,通过本文一起来学习下iOS中的runtime。
    2016-07-07
  • iOS schem与Universal Link 调试时踩坑解决记录

    iOS schem与Universal Link 调试时踩坑解决记录

    这篇文章主要为大家介绍了iOS schem与Universal Link 调试时踩坑解决记录,有需要的朋友可以借鉴参考下,希望能够有所帮助,祝大家多多进步,早日升职加薪
    2023-01-01
  • 详解使用ISO镜像搭建私有yum源

    详解使用ISO镜像搭建私有yum源

    这篇文章主要介绍了详解使用ISO镜像搭建私有yum源,小编觉得挺不错的,现在分享给大家,也给大家做个参考。一起跟随小编过来看看吧
    2018-06-06
  • iOS开发实现HTTPS之cer文件的使用详解

    iOS开发实现HTTPS之cer文件的使用详解

    下面小编就为大家分享一篇iOS开发实现HTTPS之cer文件的使用详解,具有很好的参考价值,希望对大家有所帮助。一起跟随小编过来看看吧
    2018-01-01
  • ios 流媒体播放器实现流程及FreeStreamer的使用的示例

    ios 流媒体播放器实现流程及FreeStreamer的使用的示例

    本篇文章主要介绍了ios 流媒体播放器实现流程及FreeStreamer的使用的示例代码,非常具有实用价值,需要的朋友可以参考下
    2018-01-01
  • 实例讲解iOS中的CATransition转场动画使用

    实例讲解iOS中的CATransition转场动画使用

    CATransition类为应用程序的转场动画提供了很多可控制参数,接下来我们就以几个实例讲解iOS中的CATransition转场动画使用,需要的朋友可以参考下
    2016-06-06

最新评论