如何以不同的方式设置 UIPageControl 的当前页面指示点的样式?

Posted

技术标签:

【中文标题】如何以不同的方式设置 UIPageControl 的当前页面指示点的样式?【英文标题】:How to style the current page indicator dot of UIPageControl differently? 【发布时间】:2020-08-14 11:39:46 【问题描述】:

这似乎是一个非常简单的 UI 设计要求,我似乎找不到在 ios 中轻松实现的方法。基本上,UI 人员希望当前页面指示器的点是一个拉长的点,而不是常规的点。例如,在 Retina 屏幕上,UIPageControl 的标准点是 14x14,而他们希望当前页面的点是 30x14,我搜索了一下,但似乎找不到简单的方法来实现这一点?

我已经看到了有关如何将一些自定义 UIImageViews 放入 UIPageControl 的子视图的先前答案,但是它们似乎不适用于最新的 iOS 版本。简单地改变当前页面指示器的点宽度只会弄乱点之间的间距。我想我可以为这个功能从头开始创建我自己的自定义 UIView,但对于这么简单的要求来说,这似乎是很多工作。

那么知道如何使 UIPageControl 的当前页面指示点看起来与其他点不同吗?谢谢。

【问题讨论】:

作为一般规则,尝试直接修改许多 UI 元素的内部结构并不是一个好主意...您最好编写自己的页面控件。您是否尝试过搜索(谷歌或您最喜欢的搜索引擎)custom uipagecontrol?很多结果。 好吧,就像我说的,我确信我可以从头开始编写一个自定义 UIView 对象来完成任务,但对于这样一个简单的要求来说,这似乎有点过头了。我肯定用谷歌搜索了自定义 UIPageControl,最好的结果是那些关于将 UIImageView 放入其子视图的 SO 答案,我认为这不再有效。另外,如果我想放置图像图标等来替换点,我认为编写自己的 UIView 是值得的,但是仅为拉长的点编写自定义 UIView?这真的是唯一的方法吗? 您只希望“当前”点更宽吗?并保持间距?那么这些点会随着每次变化而移动吗?或者,您是否希望点之间的间距更大,以使它们的水平中心保持不变? @DonMag,两者都可以,哪个更容易实现。 好吧,我看了一下在点上设置变换的旧方法,但它看起来不适用于当前的 iOS 版本。似乎创建一个自定义页面控件 - 用于特定的目标用途 - 不过是相当微不足道的。构建一个完全复制带有可自定义点的UIPageControl 需要更多的工作。 【参考方案1】:

我通过重写 UIPageControl.layoutSubviews 得到它。

我的代码:https://github.com/SumiaFish/KVPageContrl

【讨论】:

以上是关于如何以不同的方式设置 UIPageControl 的当前页面指示点的样式?的主要内容,如果未能解决你的问题,请参考以下文章

UIScrollView + UIPageControl + UIButton

如何结合 UIScrollview 和 UIPagecontrol 显示不同的视图?

如何用每页不同的颜色更改 UIPageControl 中分页点的颜色

启动使用 UIScrollView 的 UIPageControl 的 App 时,如何将默认页面设置在右侧而不是左侧(反向)?

如何更改 UIPageControl 的高度?

如何更改 UIPageControl 点 [重复]