iOS 自定义实现 UIPageControl 功能 (OC)

  • Post author:
  • Post category:其他


update:

时间繁忙没来得及更完,先放上来第一版代码(见文末)。

跟公司大佬交流了一下,代码中还有很多不完善的地方(不影响使用),日后会做优化。




前言

你是否有过 UIPageControl 的小圆点突然不见了的经历?

你是否曾面临设计师小姐姐 自定义 UIPageControl 图片、间距 的需求?

—— 恭喜你,本篇文章即为解决以上问题而诞生!



正文

Apple 在 iOS 14 更新了 UIPageControl,提供了很多新的功能,相关细节可以参考这篇文章:(文章)

总结一下 iOS14 针对UIPageControl 的变化:

  1. 背景
  2. 自动翻页

感觉上是变得更炫酷了,但仔细研究我们可以发现,这为实际开发带来了许多问题。首先,UIPageControl 的视图层级关系已改变 ⬇️

(这里我会画张图)

可以发现,Apple 在 原来的小圆点和UIPageControl之间加了两个视图,这就导致UIPageControl需要的frame大小比原来的更大,同时我们也无法通过原来的方式改变圆点的间距。

其次,自定义图片的方式已改变⬇️

……

以上种种导致以往在 iOS 14 以前版本的实现方法在 iOS 14 不适用了。那怎么办呢?直观的想法是,针对iOS14的新特性另实现一套方法,代码里判断系统版本就好。我最开始也是这么做的,绞尽脑汁设了图片、改了间距,最后实现了如下效果⬇️

(此处应有一张动图)

……啊啊啊啊,这就是自动翻页的坑啊!研究了半天也不知道怎么改Indicator。好吧,无奈之下我决定自定义实现一个简易的UIPageControl,继承 UIView,没有 iOS14 带来的新特性,也更符合我们的业务需求,同时也避免了以后版本更新可能带来的新一波麻烦。

(在此本菜鸡有个感想,有时候迁就官方新变化不如自己动手丰衣足食)



实现

代码地址:

SYPageControl



版权声明:本文为fusy0714原创文章,遵循 CC 4.0 BY-SA 版权协议,转载请附上原文出处链接和本声明。